Laravel 5.5 - where访问关系

Laravel 5.5 - where access relationship

在 Laravel 5.5 中,我试图获取 member->user->membership->iduser->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');
}

您可以使用 whereHas 来执行此操作:

Member::whereHas('user', function($q) use ($user) {
    $q->where('membership_id', $user->membership_id);
})->get();

我假设您在用户模型中有 membership_id,因为您正在调用 user->membership->id

并且您需要定义Member 和User 之间的关系。像这样(在成员模型中),但考虑到您遵循命名约定:

public function user() {
    return $this->belongsTo(User::class);
}