在Laravel 5.5中,我试图让所有成员member->user->membership->id
为user->membership->id
。例如:
$members = Member::where($member->user->membership->id,$user->membership->id)->get();
显然$member
尚未确定。那么,我该如何访问这种关系呢?
模型中已经定义的函数:
会员
public function user() {
return $this->belongsTo('App\User', 'account_id');
}
成员
public function user() {
return $this->hasMany('App\User');
}
用户
public function membership() {
return $this->belongsTo('App\Membership');
}
public function member() {
return $this->hasMany('App\Member','account_id');
}
答案 0 :(得分:3)
您可以使用whereHas来执行此操作:
Member::whereHas('user', function($q) use ($user) {
$q->where('membership_id', $user->membership_id);
})->get();
我假设您在用户模型中有membership_id
,因为您正在呼叫user->membership->id
。
您需要定义成员和用户之间的关系。像这样(在成员模型中),但考虑到你遵循命名约定:
public function user() {
return $this->belongsTo(User::class);
}