在我的个人资料模型中,我设置了这种关系
public function lease()
{
return $this->belongsTo(Lease::class, 'lease_id', 'id');
}
在我的 Lease 模型中,我发现了这种方式
public function profile()
{
return $this->hasOne(Profile::class, 'lease_id', id);
}
就像我在laravel中所知,你可以做到
$profile = factory(App\Profile::class)->create();
$profile->lease()->get();
然后使用集合中的模型正确响应
如果我这样做
$profile->lease
直接使用模型
不能认为动态属性会像 - > lease() - > get()的快捷方式一样立即执行查询。为什么它会给出不同的格式化结果?
答案 0 :(得分:1)
当您在构建器上调用get
时,您总是会收到一个集合。当您在类似的构建器上调用first
时,您将获得模型或null。基于关系对象的关系的动态属性将在加载时分别与get
或first
进行查询。这就是为什么$model->relationship
会返回您期望的结果的原因。
单数关系导致find
和多个关系导致get
。
Laravel 5.4 - Docs - Eloquent - Relations - Relationship Methods vs Dynamic Properties