如何将参数传递到链式 Laravel Eloquent 关系中的位置
Posted
技术标签:
【中文标题】如何将参数传递到链式 Laravel Eloquent 关系中的位置【英文标题】:How to pass a parameter to where in chained Laravel Eloquent relationship 【发布时间】:2019-12-03 10:58:04 【问题描述】:在向关系添加 where 子句时,我无法在 Laravel 中链接多个关系:
用户模型:与用户配置文件的一对多关系
列:id、用户名、电子邮件、current_region
class User
public function profile()
return $this->hasOne(Profile::class)->where('region_code',$this->current_region);
注意:在这种情况下,我使用 hasOne 来获取单个记录,而关系是 oneToMany
用户档案模型:
列:名称、编号、user_id、region_code
附件模型:
列:文件、名称、user_id、region_code
class Attachment
public function owner()
return $this->belongsTo('App\User', 'user_id');
我需要从附件模型访问 userProfle。
attachment->user->userprofile; // returns null because $this->current_region is not accessible as the context for user model is not available yet
但是我可以直接从用户模型访问 userProfile
$user->userProfile // return expected response;
如何将参数从附件模型传递给用户模型,或者有更好的方法来解决这个问题。
【问题讨论】:
【参考方案1】:您需要按照here 的描述显式加载嵌套关系
$attachments = App\attachment::with('owner.profile')->get();
那么您应该可以像这样访问个人资料
$profile = $attachment->owner->profile;
【讨论】:
以上是关于如何将参数传递到链式 Laravel Eloquent 关系中的位置的主要内容,如果未能解决你的问题,请参考以下文章