В функции Laravel Eloquent Model::all() какой порядок по умолчанию для возвращаемого запроса? Я спрашиваю это, потому что я почти уверен, что это в порядке возрастания по первичному ключу, который по умолчанию делает 'id', когда вы делаете модель через
php artisan make:model Model -m
Однако, когда я называю это так:
return $users = User::all();
Я получаю следующие результаты в браузере:
Кажется, что результаты не упорядочены ни по одному из атрибутов. Я полностью осознаю, что могу заказать их по идентификатору, выполнив
return $users = User::orderBy('id', 'asc')->get();
Но всего несколько дней назад они заказывались автоматически. Что дает?






Порядок сортировки по умолчанию для laravel просто ничего. Он не применяет предложение по умолчанию «ORDER BY», что означает, что он следует правилам PostgreSQL для неупорядоченных результатов. Из некоторых похожих ответов здесь и здесь:
Do not depend on order when ORDER BY is missing.
Always specify ORDER BY if you want a particular order -- in some situations the engine can eliminate the ORDER BY because of how it does some other step.
- GROUP BY forces ORDER BY. (This is a violation of the standard. It can be avoided by using ORDER BY NULL.)
SELECT * FROM tbl-- this will do a "table scan". If the table has never had any DELETEs/REPLACEs/UPDATEs, the records will happen to be in the insertion order, hence what you observed.If you had done the same statement with an InnoDB table, they would have been delivered in PRIMARY KEY order, not INSERT order. Again, this is an artifact of the underlying implementation, not something to depend on.
Полностью соглашаясь с ответом ФранкерЗ, я хотел бы добавить, что всякий раз, когда вы задаетесь вопросом, какой запрос laravel структурирует в ORM, прослушиватель БД будет самым быстрым вариантом для использования:
<?php
\DB::listen(function($sql) {
dump($sql);
});
В.р.т. этот вопрос будет давать select * from users, когда вы делаете User::all().
Примечание. Проверьте функцию прослушивания в соответствии с используемой вами версией laravel, количество параметров отличается в более старых и новых версиях.
Ссылка: Ссылка на документацию
Очень полезно, попробую!
Я понимаю, что вы имеете в виду, я просто получал «упорядоченные результаты», пока да, я не начал удалять и обновлять записи. Как вы сказали, он больше не надежен. Спасибо.