181 votes

Laravel 4: comment "order by" à l'aide Éloquent ORM

Simple question - comment puis-je commander par 'id' descendant dans Laravel 4.

La partie pertinente de mon contrôleur ressemble à ceci:

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

Comme je vous comprends utiliser cette ligne:

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

Mais comment concilier cela avec mon code ci-dessus?

325voto

Chris G Points 1230

Si vous utilisez un poste en tant que modèle (sans injection de dépendance), vous pouvez aussi faire:

$posts = Post::orderBy('id', 'DESC')->get();

59voto

Facebook Answers Points 1076

Si vous utilisez l'Éloquent ORM vous devriez envisager d'utiliser étendues. Cela permettrait de garder votre logique dans le modèle où il appartient.

Ainsi, dans le modèle qui vous aurait:

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

Et à l'extérieur le modèle qui vous aurait:

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

Plus d'infos: http://laravel.com/docs/eloquent#query-scopes

29voto

Matthew Camp Points 446

C'est la façon dont j'allais parler.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X