由于
YII2
框架的ActiveQuery
中,不支持在mysql语句中构造froce index ()
、use index ()
、ignore index ()
…的写法,所以上网搜索查询后得到以下办法:
-
下载qamysqlconnection.zip,引入到项目
common\components
文件夹下。 -
在
main_local.php
中,添加类似db
连接'test_db' => [ //'class' => 'yii\db\Connection',// 一般我们使用的连接类 'class' => 'common\components\qamysqlconnection\Connection',// 新连接类 'dsn' => 'mysql:host=127.0.0.1;dbname=test;port=3306', 'username' => 'test', 'password' => '123456', 'charset' => 'utf8', ],
-
test
模型中添加:public static function getDb() { return Yii::$app->get('test_db');//使用上面 test_db 的连接 } . . public static function find() { return new QaActiveQuery(get_called_class()); }
-
使用方法:
Test::find()->fromOption("FORCE INDEX(primary)")->all(); # SELECT * FROM `test` FORCE INDEX (primary)