Fel*_*sco 4 php oop relationship laravel eloquent
\ App \ User
class User
public function status() {
return $this->belongsTo('App\UserStatus', 'user_status_id', 'id');
}
Run Code Online (Sandbox Code Playgroud)
\ App \ UserStatus
class UserStatus
protected $fillable = ['id'];
public function user() {
return $this->hasMany('App\User', 'user_status_id', 'id');
}
Run Code Online (Sandbox Code Playgroud)
我已经$user从User::find()带有某些字段的简单查询中获得了status对象,然后尝试通过用$user->load('status')方法懒加载它来访问该对象。
我正在关注文档,但由于$user->status仍然返回null ,因此似乎毫无用处。
public function foo(User $user) {
$user->load('status');
$user->status // returns null
}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
---------解决方案---------
实际上,要延迟加载任何关系,必须将外键值存储在模型对象中。
在find操作中,我没有查询该user_status_id字段。当我将此字段添加到查询中时,该$user->status语句开始返回UserStatus模型。
我认为这些信息不是写在Laravel文档上,可能很简单,但是花了我一些时间才能弄清楚。
实际上,要延迟加载任何关系,必须将外键值存储在模型对象中。
在查找操作中,我没有查询user_status_id字段。当我将此字段添加到查询中时,$ user-> status语句开始返回UserStatus模型。
我认为这些信息不是写在Laravel文档上,可能很简单,但是花了我一些时间才能弄清楚。
| 归档时间: |
|
| 查看次数: |
6650 次 |
| 最近记录: |