Justique
@Justique

Динамическая подгрузка c сохранением последнего id?

Добрый день, на данный момент реализована динамическая подгрузка по offset и limit
$offset = 0;
		$limit = 8;
		if (isset(Yii::$app->request->post()['offset'])) {
			$offset = (int)Yii::$app->request->post()['offset'];
		}

		$query = Product::findNewest($audience_rec ? $audience_rec->id : null);
		$query->limit($limit + 1);
		$query->offset($offset);


Проблема заключается в том что если в момент подгрузки товаров, на сайте появляются новые записи то идёт смещение offset и записи дублируются.

Где то ранее сталкивался с такой проблемой и решение было передавать последний id записи в полученном списке и исходя из неё уже формировать запрос, так вот не помню как реализуется такая конструкция?
  • Вопрос задан
  • 74 просмотра
Решения вопроса 1
kawabanga
@kawabanga
Далеко не факт, что в магазине у вас все будет сортироваться по ИД. и вам это нужно как то решить.

В самом простом варианте, например у меня сейчас пока в виде заглушки стоит так:
$query = Model::find()
->andWhere('id<:last_id',['last_id'=>$last_id])
->orderBy('id desc')
->limit(20)
;

Во вьюхе же, рендерим блок и если записей 20, то вставляем кнопочку на подгрузку других записей.
Заметьте, что сортировка в этом случае должна быть по ид.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Есть более элегантное решение для динамической подгрузки, но для случая если вы используете DataProvider
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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