想象一下在laravel User Eloquent模型中我具有这种关系函数的情况:
public function serviceProvider(){
return $this->belongsTo('App\Http\Models\Users\ServiceProvider');
}
public function company(){
return $this->serviceProvider->company();
}
在serviceProvider模型中我有这种关系:
public function company()
{
return $this->morphOne('App\Http\Models\Companies\Company', 'companyable');
}
现在在控制器中,我这样写:
User::where('status', '=', 1)->with('company')->get();
我知道这听起来很疯狂,但它仅适用于用户id = 1,
的记录,而其余记录仅返回company : null
我不知道这是怎么回事,也许我做错了什么?有什么问题吗?
如果我写这样的东西:$user->company
,它可以工作,它对每个用户都有效,我的意思是
$user = User::where('id', '=', "any id")->first;
with()
就是问题所在
答案 0 :(得分:1)
这有点公平,我有点惊讶。
由于您与User
建立了serviceProvider
关系,并且与company
有关系,因此您在{{1}中无需建立company
关系}。
如果您想渴望/延迟加载嵌套关系,则可以使用点表示法,例如。
User