Как сделать переход между постами на блоге?

Добрый день,
Стоит задача сделать переходы между постами на сингл странице. Две кнопки следующий и предыдущий
На данный момент у меня переход идет от текучего до самого первого тобишь.
предыдущий(1) - текущий(2) - следующий(3)
предыдущий(1) - текущий(3) - следующий(4)
предыдущий(1) - текущий(4) - следующий(5)
предыдущий(1) - текущий(5) - следующий(6)
и тд.
Но как мне поправить код который в модельке, так что бы он выводил по типу
предыдущий(1) - текущий(2) - следующий(3)
предыдущий(2) - текущий(3) - следующий(4)
предыдущий(3) - текущий(4) - следующий(5)
предыдущий(4) - текущий(5) - следующий(6)
Как мне правильно отсортировать все это дело?
код в модельке
public static function getNextOrPrevEventPost($id_event,$operator)
	{
		$data = [];
		switch($operator) {
			case '<' :
				$data = Events::find()
					->select('id,title,image')
					->where(['<','id',$id_event]);
				break;
			case '>' :
				$data = Events::find()
					->select('id,title,image')
					->where(['>','id',$id_event]);
				break;
		}
		return $data->one();
	}


Код контроллера на всякий случай
public function actionView()
    {
        $getIdEvents = Yii::$app->request->get( 'id' );

        $postPaginationEventPrev = Events::getNextOrPrevEventPost($getIdEvents,'<');
        $postPaginationEventNext = Events::getNextOrPrevEventPost($getIdEvents,'>');

        $getSingleEvent = Events::find()
            ->where( ['id' => $getIdEvents] )
            ->all();

        return $this->render( 'view', [
            'getSingleEvent' => $getSingleEvent,
			'postPaginationEventPrev' => $postPaginationEventPrev,
			'postPaginationEventNext' => $postPaginationEventNext,
        ] );
    }
  • Вопрос задан
  • 133 просмотра
Решения вопроса 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
$before = Blog::find()->select( 'id, title, image' )->where( [ '<', ' id', $this->id] )->orderBy('id DESC')->one();
$after = Blog::find()->select( 'id, title, image' )->where( [ '>', ' id', $this->id] )->orderBy('id ASC')->one();

Возможно надо поменять местами DESC и ASC, постоянно путаю, что в какую сторону. Идея в том что бы сортировать по убыванию те что меньше текущего, тогда первый из них это то что нам нужно, соответственно его и выбираем. И наоборот, большая от текущего при обратной сортировке.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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