да смотрю ваш вариант, ну только раз у него id может быть любой у даты .. .то есть:
1 - 01.15.2017
2 - 01.17.2017
3 - 01.14.2017
4 - 01.14.2017
если текущая запись 4 то следующая должна быть или 3 или 1 ... но условие где id>4 не прокатит ...
поэтому сортировка пусть идет по дате, + сортировка как вы и советовали еще и по id если даты одинаковые ... и на всякий случай != текущий ид ...
итого:
Код: Выделить всё
->where(['>=', 'created_at', $this->created_at])
->andWhere(['!=', 'id', $this->id])
->orderBy(['created_at' => SORT_ASC,'id' => SORT_ASC])
но если даты одинаковые то этот вариант не прокатит т.к. просто тупо зациклится между двумя записями ...
ничего не поделать, разве что костыль, как и сделал ТС, вытаскивать все записи больше или равные его ... и в цикле перебирать .... только отказаться бы там от моделей ... а сделать ->asArray и select(['id'])
интуиция внутри меня подсказывает что у ТС НЕ одинаковые даты ... я боюсь он как то не так выразился ... может после обработки форматером они выглядят одинаково на на самом деле секунды отличаются всеже ... смотря в чем дату хранит ...