Я тоже пришел из codeigniter, и это мой опыт: Я использую Eloquent и Fluent обычно вместе. Eloquent - это то, что позволяет вам хорошо работать с отношениями, CRUD-операциями и т. Д. Когда вам нужно выполнять некоторые операции SQL, вы можете легко добавить некоторые текущие функции.
В приведенном выше примере я вижу, что у вас есть стол сообщений. Если у вас есть пост модель, то же самое написано с использованием Красноречивым является:
Post::orderBy('id', 'desc')->get();
Так как я понимаю, если вы распространяетесь красноречивее
Model_name::some_functions
таким же, как
DB::table('table_name')->some_functions
Реальная власть возникает, когда вам нужно создать или обновить модель или, например, получить комментарии к сообщению. Чем это становится легко:
$comments = Post::find($id)->comments;
Таким образом, ответ - вам нужно свободно использовать функции, чтобы получить упорядоченный список. Вы можете использовать их как с DB :: table ('posts') -> orderBy или Post :: orderBy
ТНХ, просто чтобы подтвердить, для 'Post :: найти ($ ID) -> комментарии;' 'comments' метод, это должно работать против' Post' стола , или это может быть соединение между таблицей 'Post' и' Comment'? – bitinn
Не уверен, что я понимаю. У вас есть столбец и комментарии, у вас есть post_id в таблице комментариев, и вы описываете метод в post-классе (функция comments() {return $ this-> hasMany ('comment');}. А также у вас есть класс Comment. вы можете использовать Post :: find ($ id) -> комментарии, которые присоединятся к вашей записи с комментариями (например, selet * from posts добавить комментарии к comments.post_id = posts.id) – Victor
В качестве разъяснения Красноречивый наследует от Fluent, так что в основном все, что вы Если вы делаете 'Post :: find ($ id) -> comments', вы не выполняете объединение по умолчанию, а сначала' SELECT * FROM posts WHERE id = $ id' и после этого 'SELECT * FROM comments WHERE post_id = $ id', но только при вызове/запросе' -> comments'. Если вы хотите загрузить все отношения одновременно, проверьте [Eloquent's Eager Загрузка] (http://laravel.com/docs/eloquent#eager-loading). – trm42