Добавить базу условий на родительские данные родителя в laravel - PullRequest
0 голосов
/ 01 октября 2018

У меня проблема с преобразованием запроса в 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.

1 Ответ

0 голосов
/ 01 октября 2018

Можете ли вы попробовать это решение, используя Query Builder на основе заданного вами кода:

DB::table('categories as cat')
->select([
    'cat.id',
    'reg.title as region_title',
    'reg.region_code',
    'catlang.title',
    'catlang.description',
    'cat.status'
])
->join('regions as reg', 'cat.region_id', '=', 'reg.id')
->join('category_language_region as catlang', function($join) {
    $join->on('cat.id', '=', 'catlang.category_id');
    $join->where('reg.language_id', '=', 'catlang.language_id');
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...