如何在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 . ");") , 
    ]); 
+0

语法错误或访问冲突:1064您的SQL语法错误;检查与您的MariaDB服务器版本相对应的手册,以找到在';'附近使用的正确语法' – png95

+0

我删除了'; '但输出没有什么了。 – png95

+0

可能是创建问题的组连接...我已经更新了建议的asnwer ..无论如何让我知道似乎你在你签名的错误问题不会出现.. – scaisEdge