Использование Laravel Eloquent с функцией () вместе с внутренним соединением - PullRequest
1 голос
/ 08 января 2020

Я столкнулся с проблемой при попытке использовать функцию with() вместе с объединением:

$query = Model::query()->with([
  'relationOne',
  'relationTwo',
  ...
]);

$query->join(DB::raw("(
  select *
  from <models_table>
  where <some_condition>
) as new_model"), 'new_model.id', '=', '<models_table>.id');

$query->paginate($rpp);

После вызова paginate($rpp) я получил все элементы с соответствующими отношениями, но без объединенной таблицы (aka new_model). Есть ли способ получить new_model вместе с отношениями?

Ответы [ 2 ]

1 голос
/ 09 января 2020

Вы пытались добавить оператор select, чтобы выделить таблицы, которые вы хотите получить?

$query->join(DB::raw("(
  select *
  from <models_table>
  where <some_condition>
) as new_model"), 'new_model.id', '=', '<models_table>.id')
->select(['<models_table>.*', 'new_model.*']);
0 голосов
/ 08 января 2020

Пожалуйста, попробуйте следующий код, надеюсь, он вам поможет.

$query = Model::query()->with([
  'relationOne',
  'relationTwo',
  ...
])

$query = $query->join(DB::raw("(
  select *
  from <models_table>
  where <some_condition>
) as new_model"), 'new_model.id', '=', '<models_table>.id')

$query = $query->paginate($rpp);
...