Laravel 4: как «упорядочить» с помощью Eloquent ORM

114

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

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

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

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

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

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

  • 7
    Не могли бы вы сделать что-то вроде: $ posts = $ this-> post-> orderBy ('id', 'DESC') -> get ();
  • 0
    Да, извините, у меня были проблемы с синтаксисом. Спасибо - Если вы отправите это как ответ, я с радостью выберу это как правильный ответ.
Показать ещё 2 комментария
Теги:
eloquent
laravel-4

3 ответа

196
Лучший ответ

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

$posts = Post::orderBy('id', 'DESC')->get();
  • 2
    Это путь при использовании версии 4!
  • 3
    Все еще работает в 5.1
Показать ещё 6 комментариев
48

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

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

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

И вне модели вы бы:

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

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

  • 0
    где запрос передается в idDescending() в последней строке $posts = Post::idDescending()->get();
  • 3
    Laravel разбирает это автоматически.
Показать ещё 2 комментария
25

Вот как я это сделаю.

$posts = $this->post->orderBy('id', 'DESC')->get();

Ещё вопросы

Сообщество Overcoder
Наверх
Меню