Задать вопрос
sslion
@sslion

Некорректно работает пагинация?

В приложении есть таблица товаров, и выборка записей с пагинацией работает нормально. Грубо говоря, захотели 50 записей на странице - получили. Т.е. в модели $this->paginate() работает как ожидается.
Но к товарам есть комментарии, которые хотелось бы получать вместе с товарами. Собственно таблицу комментариев связываю через $this->join(....). Как не трудно догадаться выборке будет количество записей равное количеству товаров + количество комментариев к этим товарам (далее в можно обработать полученный результат, и связать комментарии с товарами). Но вот пагинация в таком случае работать корректно не будет, т.е. мы получим не то количество товаров, которое ожидаем. Проще говоря, если мы хотим получить 50 товаров на странице, при том что у товара может быть и больше 50 комментариев, то при использовании пагинации мы получим 1 товар с 50 комментариями (а комментариев может быть больше)

Надеюсь не сильно запутанно объяснил суть проблемы.
Если отказаться от join и сначала получить пачку товаров, а потом в цикле для каждого товара получать комментарии, то в принципе должно сработать.

Но может я не правильно использую join? Это код из модели.
$this->select("products.*, comments.id as comment_id, 
            comments.author_id, comments.text, comments.author_name, comments.created_at as comment_created_at");
$this->join("comments", "products.id = comments.entity_id AND comments.entity = 'product'", "left");
$this->orderBy("created_at", "DESC");
if(isset($_GET["withDeleted"])) $this->withDeleted();
$res = $this->paginate();
  • Вопрос задан
  • 19 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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