通过将以下代码片段添加到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;
}
但是,在例如添加约束时在上述WHERE `example` = 'test
约束之后,将始终添加这些附加约束。
是否可以在添加所有其他约束后强制执行某个约束?而不是BEFORE?我需要遵守现有数据库索引的顺序。
答案 0 :(得分:1)
首先,您应该使用global scopes来实现此功能,而不是覆盖newQuery
方法。
其次,如果您唯一关心的是索引使用,则where子句中列的位置与索引选择无关。索引定义中列的顺序很重要,但不是where子句中的顺序。