1到1的反比关系"属于"给出一个集合laravel而不是模型

时间:2017-04-26 21:27:25

标签: php sql laravel eloquent

在我的个人资料模型中,我设置了这种关系

    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()的快捷方式一样立即执行查询。为什么它会给出不同的格式化结果?

1 个答案:

答案 0 :(得分:1)

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

单数关系导致find和多个关系导致get

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