Laravel 5.5 - 访问关系

时间:2018-02-16 18:39:21

标签: php laravel laravel-5 laravel-5.5

在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');
}

1 个答案:

答案 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);
}