想象一下在 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()
我有点惊讶这完全是公平的。
由于您建立User
了关系serviceProvider
并且与您建立了关系,因此company
您不需要company
在User
.
如果您想急切/延迟加载嵌套关系,您可以使用点符号,例如
User::with('serviceProvider.company')->where('status', 1)->get();
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句