У меня есть три модели прямо сейчасLaravel многие ко многим поиска отношения
Пользователь
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
И повозиться, я успешно восстановить как соотношение по прикреплению) блаблабла (.
Вопрос заключается в Как я мог искать Newspaper
что User
id1 имеет этот Language
в красноречив? Для меня это кажется довольно сложным.
User id1 -> has language en, zh
Newspaper id1 -> has language en, jp
-> OK
Newspaper id2 -> has language zh
-> NOT OK
Я попытался это, но не уверен, что это правильно или нет
$where = [];
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();