В 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');
}
2
fightstarr20 16 Фев 2018 в 21:39

1 ответ

Лучший ответ

Вы можете использовать whereHas для этого:

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

Я предполагаю, что у вас есть membership_id в модели User, поскольку вы вызываете user->membership->id.

И вам нужно определить отношения между участником и пользователем. Что-то вроде этого (в модели-члене), но с учетом того, что вы следуете соглашению об именах:

public function user() {
    return $this->belongsTo(User::class);
}
3
Laerte 16 Фев 2018 в 21:53