Yii2 QueryBuilder联合体不工作

Yii2 QueryBuilder联合体不工作,yii2,union,Yii2,Union,这是我的密码。我想将结果从两列中选择为一列。谢谢 $messages = (new \yii\db\Query()) ->select(['idsender as idotherguy']) ->from('messages') ->where(['idreceiver' => Yii::$app->user->identity->id])

这是我的密码。我想将结果从两列中选择为一列。谢谢

   $messages = (new \yii\db\Query())
               ->select(['idsender as idotherguy'])
               ->from('messages')
               ->where(['idreceiver' => Yii::$app->user->identity->id])
               ->all(); 
    $messages2 = (new \yii\db\Query())
               ->select(['idreceiver as idotherguy'])
               ->from('messages')
               ->where(['idsender' => Yii::$app->user->identity->id])
               ->all(); 
    $messages->union($messages2);
经过这里的建议,我也尝试了

    $messages = (new \yii\db\Query())
               ->select(['idsender as idotherguy'])
               ->from('messages')
              ->where(['idreceiver' => Yii::$app->user->identity->id]);

    $messages2 = (new \yii\db\Query())
               ->select(['idreceiver '])
               ->from('messages')
              ->where(['idsender' => Yii::$app->user->identity->id]);

    $messages->union($messages2);
    $messages->all(); 
我得到了查询对象

      yii\db\Query Object
[选择]=>阵列 [0]=>idsender作为idotherguy


就是这样。。。我也尝试了answe bellow,并在选择“idreceiver as idotherguy”中使用。。。但是结果是一样的

看看文档,您不应该在查询中包含所有内容

$messages = (new \yii\db\Query())
           ->select(['idsender as idotherguy'])
           ->from('messages')
           ->where(['idreceiver' => Yii::$app->user->identity->id]); 
$messages2 = (new \yii\db\Query())
           ->select(['idreceiver as idotherguy'])
           ->from('messages')
           ->where(['idsender' => Yii::$app->user->identity->id]); 
$messages->union($messages2);
$messages->all();

在联合查询中应避免使用别名,使用文本选择格式并仅对结果应用all

  $messages = (new \yii\db\Query())
             ->select('idsender as idotherguy')
             ->from('messages')
             ->where(['idreceiver' => Yii::$app->user->identity->id]); 

  $messages2 = (new \yii\db\Query())
             ->select('idreceiver')
             ->from('messages')
             ->where(['idsender' => Yii::$app->user->identity->id]); 

  $messages->union($messages2);
  $messages->all();
要查看结果,您应该

 foreach($messages as $key=> $value) {

   echo $value->idotherguy;
 }
或者如果结果是一个数组

  foreach($messages as $key=> $value) {

    echo $value['idotherguy'];
 }
尝试以这种方式检查ral sql代码,而不是$messages->all

var_dump( $messages->createCommand()->sql);

我更改了这里提供的代码,现在可以正常工作了

   $messages = (new \yii\db\Query())
               ->select(['idsender as idotherguy'])
               ->from('messages')
               ->where(['idreceiver' => Yii::$app->user->identity->id]);
    $messages2 = (new \yii\db\Query())
               ->select(['idreceiver as idotherguy'])
               ->from('messages')
              ->where(['idsender' => Yii::$app->user->identity->id]);
    $messages = $messages->union($messages2)
                ->all();
现在的结果是数组中包含我想要的值。 大堆 [0]=>阵列 [idotherguy]=>3


谢谢大家的帮助,男孩们:

我仍然没有得到包含结果的数组,但是yii\db\Query object你是什么意思。。你有错误吗。。错误的结果?更新您的问题,并在获得查询结果时显示代码。请尝试使用它。。请II\db\Query Object[select]=>Array[0]=>idsender作为idotherguy[selectOption]=>[distinct]=>[from]=>Array[0]=>messages[groupBy]=>[join]=>[having]=>[union]=>Array[0]=>数组[查询]=>yii\db\query对象。。。。。。。还有,不要在评论中发布代码。。。更新您的问题添加代码和格式我做了,请检查这一点,因为上面的解决方案为我提供了yii\db\Query对象,也没有带结果的数组单独的查询工作得很好
   $messages = (new \yii\db\Query())
               ->select(['idsender as idotherguy'])
               ->from('messages')
               ->where(['idreceiver' => Yii::$app->user->identity->id]);
    $messages2 = (new \yii\db\Query())
               ->select(['idreceiver as idotherguy'])
               ->from('messages')
              ->where(['idsender' => Yii::$app->user->identity->id]);
    $messages = $messages->union($messages2)
                ->all();
[1] => Array
    (
        [idotherguy] => 11
    )

[2] => Array
    (
        [idotherguy] => 10
    )