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
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы