我是CakePHP的新手,想知道如何在CakePHP 4中实现查询的强制索引。
任何能帮助我的人我都会非常感激。
如果您不使用自动引用(请参阅应用程序数据源配置中的quoteIdentifiers
选项(,一个简单的解决方法可能会为您做到这一点,即将语句注入FROM
子句,如:
$query = $Table
->find()
->from($Table->getTable() . ' FORCE INDEX (foo_idx)');
这将生成类似SQL的
SELECT ... FROM table_name FORCE INDEX (foo_idx)
然而,一旦使用了自动引号,就会中断,因为传递给from()
的整个字符串都将用引号括起来,而不仅仅是表名。
如果你想让它与自动引用一起工作,那么你必须实现你自己的(扩展(驱动程序类,你自己的查询类,它有一个API来设置索引,最后是你自己的询问编译器,它将这些索引配置相应地编译到正确的SQL中。
所以,没有过于简单的任务。在您对该框架积累了足够的经验来实现和维护这样的自定义逻辑之前,此类情况通常最好通过使用自定义原始SQL查询来解决。