我是CakePHP新手,想知道如何在CakePHP 4中实现查询强制索引。任何人能帮助我都将非常感激。
ymdaylpp1#
如果您没有使用自动引用(请参阅应用程序中的quoteIdentifiers选项datasource configuration),一个简单的解决方法可能会为您执行此操作,即将语句注入FROM子句,如下所示:
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查询来解决此类问题。
from()
1条答案
按热度按时间ymdaylpp1#
如果您没有使用自动引用(请参阅应用程序中的
quoteIdentifiers
选项datasource configuration),一个简单的解决方法可能会为您执行此操作,即将语句注入FROM
子句,如下所示:这将生成如下SQL
但是,一旦使用了自动引用,就会出现这种情况,因为传递给
from()
的整个字符串都将包含在引号中,而不仅仅是表名。如果您希望它与自动引用一起工作,那么您必须实现您自己的(扩展)驱动程序类、您自己的具有设置索引的API的查询类,以及您自己的查询编译器,该编译器将这些索引配置相应地编译为适当的SQL。
因此,没有过于简单的任务。除非您已经积累了足够的框架经验来实现和维护这样的自定义逻辑,否则通常最好使用自定义原始SQL查询来解决此类问题。