我已经定义了我的Slot模型来加载来自User模型的关系,如下所示:
public function userAssignedFull(): HasOne {
return $this->hasOne(User::class,'id','user_assigned');
}
('slots'表包含'user_assigned'字段,通过该字段我连接到'id'上的用户记录)
以下代码查找Slot模型但没有'userAssignedFull'。我只获得'user_assigned'中的用户ID。
$slot = Slot::with('userAssignedFull')->find($slot_id);
但是之后调用它会返回我想要的关系:
$fullUserModel = $slot->userAssignedFull;
谁能告诉我我做错了什么?
所以你必须调用$slot->userAssignedFull;
来获取数据集合。
来自docs:
当访问Eloquent关系作为属性时,关系数据是“延迟加载”。这意味着在您首次访问该属性之前,实际上不会加载关系数据。
而这个$slot->userAssignedFull;
是您“第一次访问该物业”。
试试这个
$slot = Slot::where('id', $slot_id)->with('userAssignedFull')->first();
$slot->userAssignedFull;