如何使用yii来表达下面这个SQL语句

新手提问 · wy1272086709 · 于 6年前 发布 · 3775 次阅读

如题,示例SQL select (select count(*) from table1),(select count(*) from table2),(select count(*) from table3)

另外,发现yii2 中的db类能够解析SQL,给写SQL语句带来一定规范性的同时,但同时对于复杂的sql语句,用yii2表达有时却会出现性能问题.如多个日志表的union和join.

共收到 2 条回复
forecho#16年前 0 个赞

没必要纠结这个,不能用AR实现的,可以用 $connection->createCommand() 方式,写原生 SQL

$db = \Yii::$app->getDb();
        $select = [
            'c1'=>new \yii\db\Expression('(select count(*) from eleFenceCenter.elefence_menu)'),
            'c2'=>new \yii\db\Expression('(select count(*) from eleFenceCenter.elefence_auth_item)')
        ];
        $q = new \yii\db\Query();
        $rs = $q->select($select)->one();

用这种方式可以实现.

添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册