Ich kam auch aus codeigniter und das ist meine Erfahrung: Ich benutze eloquent und fließend meist zusammen. Eloquent ist eine Sache, die Ihnen erlaubt, gut mit Beziehungen, CRUD-Operationen usw. zu arbeiten. Wenn Sie einige SQL-Operationen ausführen müssen, können Sie leicht einige fließende Funktionen hinzufügen
In dem oben erwähnten Beispiel sehe ich, dass Sie posts table haben. Wenn Sie ein Post-Modell haben dann die gleiche Sache geschrieben Eloquent verwendet, ist:
Post::orderBy('id', 'desc')->get();
So wie ich es, wenn man Eloquent erstreckt als
Model_name::some_functions
die gleiche wie
ist
DB::table('table_name')->some_functions
Die wahre Stärke kommt, wenn Sie ein Modell erstellen oder aktualisieren müssen oder beispielsweise Post-Kommentare erhalten. Dann wird es leicht:
$comments = Post::find($id)->comments;
Also die Antwort ist - Sie müssen fließende Funktionen verwenden, um geordnete Liste zu bekommen. Sie können beide mit DB :: table ('posts') -> orderBy oder Post :: orderBy verwenden
thx, bestätigen nur, für 'Beitrag :: find ($ id) -> Kommentare;' 'die comments' Methode, hat es gegen' Post' Tisch laufen oder kann es eine Verbindung zwischen 'Post' und' Comment' Tabelle sein? – bitinn
Nicht sicher, ich verstehe. Sie haben eine Post- und Kommentartabelle, Sie haben Post-ID in der Kommentartabelle und Sie beschreiben eine Methode in der Post-Klasse (Funktion comments() {return $ this-> hasMany ('comment');}. Und Sie haben auch die Comment-Klasse Sie können Post :: find ($ id) -> Kommentare verwenden, die Ihrem Beitrag mit Kommentaren beitreten (wie selet * aus Beiträgen kommen Kommentare auf comments.post_id = posts.id) – Victor
Zur Klärung erbt Eloquent von Fluent also grundsätzlich alles was Sie tun in Fluent, kann in Eloquent verwendet werden Wenn Sie 'Post :: find ($ id) -> comments' tun, tun Sie nicht beitreten standardmäßig aber zuerst 'SELECT * FROM posts WHERE id = $ id 'und danach 'SELECT * FROM Kommentare WHERE post_id = $ id', aber nur wenn Sie _-> comments' aufrufen/fragen Wenn Sie alle Beziehungen gleichzeitig laden wollen, lesen Sie [Eloquent's Eager Laden] (http://laravel.com/docs/eloquent#eager-loading). – trm42