$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, постоянно путаю, что в какую сторону. Идея в том что бы сортировать по убыванию те что меньше текущего, тогда первый из них это то что нам нужно, соответственно его и выбираем. И наоборот, большая от текущего при обратной сортировке.