2013-07-09 23 views
117

Basit bir soru ile - nasıl laravel içinde azalan 'kimlik' ile sipariş edebilirim 4.laravel 4: nasıl "düzen tarafından" Etkili ORM

benim denetleyicisi ilgili kısmı aşağıdaki gibidir:

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

sana bu çizgiyi kullanmak anlamak gibi:

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

Ama yukarıdaki kod ile nasıl neresinde?

+7

gibi bir şey yapamaz mıyız: $ posts = $ this-> post-> orderBy ('id', 'DESC') -> get(); –

+0

Evet, özür dilerim, sözdizimi ile ilgili sorun yaşıyorum. Teşekkürler - Bunu bir cevap olarak gönderirseniz, doğru cevabı memnuniyetle seçerim. – Josh

+0

Sorduğunuz için teşekkür ederiz. Tam olarak aradığım şey buydu. – Foxinni

cevap

204

sen (bağımlılık enjeksiyon olmadan) bir model olarak görevini kullanıyorsanız, ayrıca yapabilirsiniz: Eğer Etkili ORM kullanıyorsanız

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

Bu, sürüm 4'ü kullanırken gitmenin yolu! – Ms01

+1

Yine de kesinlikle hala 5.4 –

+1

çalışır()' son satır '$ mesajların = Mesaj :: idDescending() içinde - > get(); ' –

24

Bu şekilde böyle giderim.

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

Eğer kapsamları kullanmayı düşünmelisiniz. Bu, mantığınızı ait olduğu modelde tutacaktır.

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

Ve modele dışarıda olurdu:

Yani, modelde sen olurdu

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

diğer bilgiler: http://laravel.com/docs/eloquent#query-scopes

+0

ince çalışma çalışan 5.3 –

+3

Laravel otomatik olarak ayrıştırır. – Puzbie

+0

Bu cevap ile giderdim. Normalde günlük işimde bunu nasıl yaparım: Bu modda: '' 'public function scopeLatest ($ query) { return $ query-> orderBy ('created_at') -> get(); } '' ' Ve denetleyicinin içinde:' 'döndürme görünümü ('project.view') -> ile (['projeler' => Proje :: en son()]);' '' –