Laravel 4: как сделать "заказ по" с помощью Eloquent ORM

Простой вопрос - как мне упорядочить по 'id' по убыванию в Laravel 4.

Соответствующая часть моего контроллера выглядит следующим образом:

$posts = $this->post->all()

Как я понимаю, вы используете эту строку:

->orderBy('id', 'DESC');

Но как это сочетается с моим приведенным выше кодом?

Комментарии к вопросу (4)
Решение

Если вы используете post в качестве модели (без инъекции зависимостей), вы также можете сделать это:

$posts = Post::orderBy('id', 'DESC')->get();
Комментарии (9)

Если вы используете Eloquent ORM, вам следует рассмотреть возможность использования диапазонов. Это позволит сохранить вашу логику в модели, где ей и место.

Итак, в модели у вас должно быть:

public function scopeIdDescending($query)
{
        return $query->orderBy('id','DESC');
}   

А вне модели вы будете иметь:

$posts = Post::idDescending()->get();

Дополнительная информация: http://laravel.com/docs/eloquent#query-scopes

Комментарии (4)

Вот как я бы поступил.

$posts = $this->post->orderBy('id', 'DESC')->get();
Комментарии (0)