gpt4 book ai didi

sql - Laravel Eloquent 'where' 保证顺序吗?

转载 作者:行者123 更新时间:2023-12-01 16:36:22 26 4
gpt4 key购买 nike

例如,这样做:

Model::where('role', 'all')->orWhere('role','user')->first();

始终先获取角色为“all”的模型,因为 where() 的声明早于 orWhere()?

或者我不应该相信它并始终检查是否?

$foo = new Model;
$bar = $foo->where('role', 'all')->first();
if(empty($bar)){
$bar = $foo->where('role','user')->first();
}

或者更好的解决方案?

最佳答案

不,它不会,它与 Laravel 无关,这就是 SQL 的工作方式。

查询构建器将生成以下 SQL 语句:

SELECT * FROM Model WHERE `role` = 'all' OR `role` = 'user' LIMIT 1;

您获取行的顺序将是它们在 Model 表中的顺序。如果要对行进行排序,则必须对查询应用顺序,例如:

Model::where('role', 'all')
->orWhere('role','user')
->orderByRaw('CASE role WHEN \'all\' THEN 1 ELSE 2 END DESC')
->first();

关于sql - Laravel Eloquent 'where' 保证顺序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55236880/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com