У меня проблема с преобразованием запроса в Laravel Eloquent.Это запрос:
SELECT cat.id,
reg.title AS region_title,
reg.region_code,
catlang.title,
catlang.description,
cat.status
FROM categories AS ca
JOIN regions As reg
ON cat.region_id = reg.id
JOIN category_language_region As catlang
ON cat.id = catlang.category_id
AND reg.language_id = catlang.language_id;
Это работает в Postgres и, как вы можете видеть, я добавил дополнительное условие для присоединения к category_language_region reg.language_id = catlang.language_id
.Я застрял при преобразовании его в Laravel Eloquent Builder.
Это схема для него
- Язык таблицы: id, код
- Область таблицы: id,code, language_id
- Категория таблицы: id, status, region_id
- Категория таблицы Language Область: id, title, category_id, language_id
Это то, что я пытался
$results = Category::with([
'region' => function($query){
$query->select('title', 'id', 'region_code', 'language_id');
},
'categoryLanguages'
])->select(['categories.*'])
->whereIn('region_id', $region_ids);
Но он возвращает все языковые категории региона.Мне нужно добавить в условие, чтобы выбрать только category_language_region.language_id
равно выбранному region.language_id
.