Laravel 4: Comment "commander par" en utilisant Eloquent ORM [dupliquer]

Cette question a déjà une réponse ici:

Question Simple-Comment puis-je commander par 'id' descendant dans Laravel 4.

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

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

Si je comprends bien, vous utilisez cette ligne:

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

Mais comment cela correspond-il à mon ci-dessus code?

132
demandé sur Josh 2013-07-09 20:13:47

3 réponses

Si vous utilisez post comme modèle (sans injection de dépendance), vous pouvez également faire:

$posts = Post::orderBy('id', 'DESC')->get();
229
répondu Chris G 2014-03-10 18:50:30

Si vous utilisez L'ORM Eloquent, vous devriez envisager d'utiliser des étendues. Cela garderait votre logique dans le modèle où elle appartient.

Ainsi, dans le modèle, vous auriez:

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

Et en dehors du modèle que vous auriez:

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

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

47
répondu Relaxing In Cyprus 2015-04-22 07:23:36

C'est comme ça que je m'y prendrais.

$posts = $this->post->orderBy('id', 'DESC')->get();
24
répondu Matthew Camp 2013-07-09 16:24:47