web-dev-qa-db-fra.com

Laravel 4: comment "commander par" en utilisant Eloquent ORM

Question simple - comment puis-je classer par 'id' décroissant dans Laravel 4.

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

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

Si j'ai bien compris, vous utilisez cette ligne:

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

Mais comment cela s'insère-t-il dans mon code ci-dessus?

166
Josh

Si vous utilisez post comme modèle (sans injection de dépendance), vous pouvez également effectuer les tâches suivantes:

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

Si vous utilisez l'ORM Eloquent, vous devriez envisager d'utiliser des oscilloscopes. Cela garderait votre logique dans le modèle auquel elle appartient.

Donc, dans le modèle que 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

54
Relaxing In Cyprus

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

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