Laravel渴望加载仅在调用属性

时间:2019-04-22 14:12:24

标签: laravel eloquent eager-loading eloquent--relationship

我已经定义了我的广告位模型,以便从用户模型加载关系,如下所示:

public function userAssignedFull(): HasOne {
    return $this->hasOne(User::class,'id','user_assigned');
}

(“插槽”表包含“ user_assigned”字段,我通过该字段连接到“ id”上的用户记录)

以下代码查找插槽模型,但没有'userAssignedFull'。我在“ user_assigned”中仅获得用户ID。

  $slot = Slot::with('userAssignedFull')->find($slot_id);

但是后来打电话给我,则返回了想要的关系:

$fullUserModel = $slot->userAssignedFull;

有人可以告诉我我在做什么错吗?

2 个答案:

答案 0 :(得分:1)

Builder::with()返回Builder实例。

因此,您必须致电$slot->userAssignedFull;来获取数据集合。

来自docs

  

在访问口才关系作为属性时,该关系   数据是“延迟加载”。这意味着数据不是   实际加载,直到您首次访问媒体资源

$slot->userAssignedFull;是您的“首次访问媒体资源”

答案 1 :(得分:0)

尝试一下

$slot = Slot::where('id', $slot_id)->with('userAssignedFull')->first();
$slot->userAssignedFull;