如何在yii2的查询中设置GROUP_CONCAT?
问题描述:
我想提出如下查询:如何在yii2的查询中设置GROUP_CONCAT?
SELECT GROUP_CONCAT(`user_id` SEPARATOR ',') FROM `damages` WHERE `server_id`=2
在我的主查询:
$q = new Query();
$dataProvider = new ActiveDataProvider([
'query' => Ticket::find()->where(['user_id' => Yii::$app->user->identity->id])
->andWhere(['in', 'user_id', [$q->select(["GROUP_CONCAT(`user_id` SEPARATOR ',')"])->from('damages')->where(['server_id' => Yii::$app->user->identity->id])]]) ,
]);
它的错误:
Object of class yii\db\Query could not be converted to string
,当改变主查询:
andWhere(['in', 'user_id', $q->select(["GROUP_CONCAT(user_id SEPARATOR ',')"])->from('damages')->where(['server_id' => Yii::$app->user->identity->id])])
输出什么也没有。
如何解决此错误?
答
为andWhere您可以使用文字,其中
$q = new Query();
$dataProvider = new ActiveDataProvider([
'query' => Ticket::find()->where(['user_id' => Yii::$app->user->identity->id])
->andWhere(" user_id in (SELECT GROUP_CONCAT(`user_id` SEPARATOR ',') FROM damages where server_id = " .
Yii::$app->user->identity->id . ");") ,
]);
但看着你的代码可能是你需要
$q = new Query();
$dataProvider = new ActiveDataProvider([
'query' => Ticket::find()->where(['user_id' => Yii::$app->user->identity->id])
->andWhere(" user_id in (SELECT `user_id` FROM damages where server_id = " . Yii::$app->user->identity->id . ");") ,
]);
语法错误或访问冲突:1064您的SQL语法错误;检查与您的MariaDB服务器版本相对应的手册,以找到在';'附近使用的正确语法' – png95
我删除了'; '但输出没有什么了。 – png95
可能是创建问题的组连接...我已经更新了建议的asnwer ..无论如何让我知道似乎你在你签名的错误问题不会出现.. – scaisEdge