通过将以下代码片段添加到 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/