php - Laravel/Eloquent - newQuery 约束在查询中的位置

标签 php mysql laravel eloquent

通过将以下代码片段添加到 Eloquent 模型中,我可以强制模型对使用该模型进行的所有数据库调用包含某些 SQL 约束:

public function newQuery($excludeDeleted = true)
{
    // Make use of all functionalities of the "newQuery" method of the
    // parent Eloquent class; and add constraints to that instance.
    $sql = parent::newQuery($excludeDeleted);

    // Example constraint
    $sql->where('example', 'test');

    return $sql;
}

但是,当添加约束时,例如对于 Controller ,这些附加约束将始终添加在上述 WHERE `example` = 'test 约束之后。

是否可以在添加所有其他约束后强制执行某个约束?而不是之前?我有这个需要遵守现有数据库索引的顺序。

最佳答案

首先,您应该使用 global scopes实现此功能,而不是重写 newQuery 方法。

其次,如果您唯一关心的是索引的使用,则 where 子句中列的位置对于索引选择并不重要。索引定义中列的顺序很重要,但 where 子句中的顺序并不重要。

关于php - Laravel/Eloquent - newQuery 约束在查询中的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38020683/

相关文章:

php - 在 jquery 中通过 javascript 获取 json 数组

PHP:动态分配一个空对象给stdClass

javascript - 使用 PHP MySql 创建更新用户配置文件页面

mysql - 如何在cPanel中查找服务器名称?

php - 使用 GROUP SEPARATOR 的 Explode() 函数

php - 如何在 Laravel Jetstream 中设置用户当前团队

php - Laravel - 如何使用查询生成器或 Eloquent 添加 JOIN 和 CASE-WHEN?

php - 我可以根据用户的浏览器使用不同的最大高度值吗?

c# - 处理与 MySql 的连接丢失

php - Laravel Lumen Collection - Group By With Sum 并保留值