class Admin {
public function user()
{
return $this->morphOne('App'Models'User', 'humanable');
}
public function master()
{
return $this->hasOne('App'Models'Master');
}
}
class Master {
public function admin()
{
return $this->hasOne('App'Models'Admin');
}
}
class User {
public function humanable()
{
return $this->morphTo();
}
public function images()
{
return $this->hasOne(''App'Models'Image');
}
}
class Image {
public function user()
{
return $this->belongsTo(''App'Models'User');
}
}
现在,如果我转储这个:
return 'App'Models'Admin::where('id',1)->with(array('user.images','master'))->first();
我得到了一个母版、一个用户和一个图像记录的完美结果。
但如果我这样做
return $user = 'App'Models'User::where('id',1)->with(array('humanable','humanable.master'))->first();
我只得到一条管理员记录,来自大师的查询 get * 甚至没有运行。
知道我做错了什么,我相信这是可能的。
如果我没记错的话,Laravel有很多陷阱。您可以尝试在管理模型中使用 protected $with
var,而不是带有函数的查询生成器。
class Admin {
protected $with = ['master'];
public function user() {
return $this->morphOne('App'Models'User', 'humanable');
}
public function master() {
return $this->hasOne('App'Models'Master');
}
}
在查询生成器中,只需要包含humanable
.现在你应该在人类对象中看到主人。
return $user = 'App'Models'User::where('id',1)->with('humanable')->first();
希望这有帮助。