2017-04-26 66 views
0

在我档案模式,我设置好的这种关系1对1的反比关系“属于关联”给人一种集合laravel而不是模型

public function lease() 
{ 
    return $this->belongsTo(Lease::class, 'lease_id', 'id'); 
} 

在我租赁模型我seeted这样

public function profile() 
{ 
    return $this->hasOne(Profile::class, 'lease_id', id); 
} 

只要我知道laravel你可以做

$profile = factory(App\Profile::class)->create(); 

$profile->lease()->get();

然后用模型正确响应集合 的内部,如果我做 $profile->lease 因子效应正确直接与模型

它不应该是动态propertis执行查询的时候了像 - > lease() - > get()?的快捷方式?为什么它给出不同的格式化结果?

+0

1配置文件可以有多个租约,租期1有1个轮廓 –

+0

我忘了说,它应该是一比一的关系。正如我在文档中看到的那样**我们可以使用belongsTo方法定义hasOne关系的反函数** 还有其他方法吗? –

+1

从技术上讲,如果你想要1比1,你仍然可以为同一个配置文件拥有多个租约 - 你必须在同一个表中声明这些字段 –

回答

1

当您在建筑商上致电get时,您总会收到一个集合。当你在这样的构建器上调用first时,你会得到一个模型或null。基于关系对象的关系的动态属性将分别在其加载时分别使用getfirst进行查询。这就是为什么$model->relationship正在向您返回您期望的结果。

单数的关系会导致find和许多导致get的关系。

Laravel 5.4 - Docs - Eloquent - Relations - Relationship Methods vs Dynamic Properties

+0

哇**单数的关系,导致一个查找和许多导致get。**有没有办法指定何时应用get()或first()在动态属性 –

+1

@JosePalazuelos no它基于关系类型...一个hasOne永远不会回报很多。一个hasMany有望返回很多。你必须决定你想要你的关系是:) – lagbox