Art*_*ano 3 php postgresql laravel eloquent
在 Laravel EloquentModel::all()函数中,返回查询的默认排序是什么?我问这个是因为我很确定它是按主键升序排列的,'id'当你让模型通过时默认这样做
php artisan make:model Model -m
Run Code Online (Sandbox Code Playgroud)
但是,当我这样称呼它时:
return $users = User::all();
Run Code Online (Sandbox Code Playgroud)
我在浏览器中得到以下结果:
结果似乎没有任何属性的特定顺序。我完全知道我可以通过 id 订购它们
return $users = User::orderBy('id', 'asc')->get();
Run Code Online (Sandbox Code Playgroud)
但就在几天前,它们被自动订购。是什么赋予了?
laravel 的默认排序顺序是无。它不应用默认的“ORDER BY”子句,这意味着它遵循 PostgreSQL 无序结果规则。来自这里和这里的一些类似答案:
当 ORDER BY 缺失时,不要依赖于顺序。
如果你想要一个特定的顺序,总是指定 ORDER BY —— 在某些情况下,引擎可以消除 ORDER BY,因为它如何执行其他一些步骤。
- GROUP BY 强制 ORDER BY。(这违反了标准。可以通过使用 ORDER BY NULL 来避免。)
SELECT * FROM tbl-- 这将进行“表扫描”。如果该表从未有任何 DELETE/REPLACE/UPDATE,则记录将碰巧按插入顺序排列,因此您观察到了什么。如果您对 InnoDB 表执行了相同的语句,则它们将以 PRIMARY KEY 顺序而不是 INSERT 顺序传递。同样,这是底层实现的工件,而不是依赖的东西。
| 归档时间: |
|
| 查看次数: |
1061 次 |
| 最近记录: |