Laravel 多对多关系搜索

问题描述 投票:0回答:1

我现在有三个型号

用户

public function languages(){
    return $this->belongsToMany('App\Language');
}

报纸

public function languages(){
    return $this->belongsToMany('App\Language');
}

语言

public function users(){
    return $this->belongsToMany('App\User');
}

public function newspapers(){
    return $this->belongsToMany('App\Newspaper');
}

我已经有了

language_user
language_newspaper
桌子

在 Tinker 中,我已经通过 Attach() blablabla 成功检索了这两个关系。

问题是 我怎样才能在 eloquent 中搜索

Newspaper
id1 有这个
User
呢?对我来说似乎很复杂。

Language


User id1 -> has language en, zh

->好的


Newspaper id1 -> has language en, jp

-> 不行


我已经尝试过,但不确定是否正确

Newspaper id2 -> has language zh


$where = [];

	
php laravel eloquent many-to-many relationship
1个回答
1
投票
foreach ($agent->languages as $language) { array_push($where, $language->id);} $newspapers = Newspaper:: join('language_newspaper', function ($join) use ($where) { $join->on('newspaper.id', '=', 'langauge_newspaper.newspaper_id') ->whereIn('langauge_newspaper.newspaper_id', $where); }) ->groupBy('newspaper.id') ->get();

,如下所示:


whereHas

	
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.