在yii2查询中设置SQL_BIG_SELECTS的位置?

时间:2015-08-24 17:28:18

标签: php mysql database yii yii2

执行查询时出错。

  

SQLSTATE [42000]:语法错误或访问冲突:1104 SELECT   会检查超过MAX_JOIN_SIZE行

我必须 SET SQL_BIG_SELECTS = 1

我正在使用YII2并且不知道在哪里设置它。

请帮忙。

1 个答案:

答案 0 :(得分:5)

来自docs

  

如果您需要在建立连接后立即执行SQL查询(例如,设置时区或字符集),则可以在[[yii \ db \ Connection :: EVENT_AFTER_OPEN]]事件处理程序中执行此操作。 / p>

return [
    // ...
    'components' => [
        // ...
        'db' => [
            'class' => 'yii\db\Connection',
            // ...
            'on afterOpen' => function($event) {
                // $event->sender refers to the DB connection
                $event->sender->createCommand("SET SQL_BIG_SELECTS = 1")->execute();
            }
        ],
    ],
    // ...
];

或者在查询之前运行一次SQL查询:

$connection = \Yii::$app->getDb();
$res = $connection->createCommand("SET SQL_BIG_SELECTS = 1")->execute();