blrik
@blrik
Музыкант

Как сделать запрос union в laravel чтобы работала пагинация?

Добрый день, пытаюсь на laravel сделать запрос, чтобы в выдаче получить товары из дочерних категорий и самой категории. Вот сам запрос:

$first = Product::where('status', 1)
->where('category_id', $catalog->id);

$load_product = Product::where('status', 1)
->whereIn('category_id', Catalog::select('id')->where('parent_id', $catalog->id)->get())
->union($first)
->paginate();


в ответ получаю:
SQLSTATE[21000]: Cardinality violation: 1222 The used SELECT statements have a different number of columns (SQL: (select count(*) as aggregate

если в конце запроса вместо ->paginate(); написать ->get(); то всё работает нормально.
Как заставить правильно отрабатывать пагинацию?
  • Вопрос задан
  • 569 просмотров
Решения вопроса 1
xpert13
@xpert13
Full Stack Developer
Зачем здесь union? Можно ведь одним запросом всё сделать, как-то так:

$load_product = Product::where('status', 1)->where(function($query) use($catalog)
{
    return $query->where('category_id', $catalog->id)
           ->orWhereIn('category_id', Catalog::where('parent_id', $catalog->id)->pluck('id'));
}
->paginate();
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы