视图中的Yii2基本sql查询

视图中的Yii2基本sql查询,yii2,yii2-basic-app,Yii2,Yii2 Basic App,我试图在视图中获取内容作者的用户配置文件图像,我的视图是我创建的频道,但在视图中出现此错误 Undefined variable: queryAvatar 在我看来,我做到了 //Yii2视图代码 use yii\helpers\Html; use yii\widgets\DetailView; /* @var $this yii\web\View */ /* @var $model app\models\Channel */ $this->title = $model->Ch

我试图在视图中获取内容作者的用户配置文件图像,我的视图是我创建的频道,但在视图中出现此错误

Undefined variable: queryAvatar
在我看来,我做到了

//Yii2视图代码
use yii\helpers\Html;
use yii\widgets\DetailView;

/* @var $this yii\web\View */
/* @var $model app\models\Channel */

$this->title = $model->Channel_name;
?>
<div class="channel-view">

    <h1><?= Html::encode($this->title) ?></h1>
    <div><?php echo  $queryAvatar; ?></div> // THE LINE I ADD

    <?php if($model->uid == Yii::$app->user->id):?>
    <p>
        <?= Html::a('Update', ['update', 'id' => $model->Channel_id], ['class' => 'btn btn-primary']) ?>
        <?= Html::a('Delete', ['delete', 'id' => $model->Channel_id], [
            'class' => 'btn btn-danger',
            'data' => [
                'confirm' => 'Are you sure you want to delete this item?',
                'method' => 'post',
            ],
        ]) ?>
    </p>
    <?php endif;?>
</div>

在控制器中定义一个空模型,使$C通道->uid为空

您必须首先像这样定义您的模型

 public function actionChannel($id)
        {
            $cchannel = $this->findModel($id);
            $queryAvatar = (new \yii\db\Query())

            ->select(['uavatar'])
            ->from('userlogin')
            ->where(['uid' => $cchannel->uid])
            ->All();

            return $this->render('channel', [
                'model' => $cchannel ,
                'queryAvatar '=> $queryAvatar ,
            ]);
        }

在控制器中定义一个空模型,使$C通道->uid为空

您必须首先像这样定义您的模型

 public function actionChannel($id)
        {
            $cchannel = $this->findModel($id);
            $queryAvatar = (new \yii\db\Query())

            ->select(['uavatar'])
            ->from('userlogin')
            ->where(['uid' => $cchannel->uid])
            ->All();

            return $this->render('channel', [
                'model' => $cchannel ,
                'queryAvatar '=> $queryAvatar ,
            ]);
        }

该问题可能是由于在提交给视图之前创建变量数组时出现空格引起的

return $this->render('channel', [
                'model' => $this->findModel($id),
                'queryAvatar  '=> $queryAvatar ,
            ]);
从“queryAvatar”中删除空间 像这样:

return $this->render('channel', [
                    'model' => $this->findModel($id),
                    'queryAvatar'=> $queryAvatar ,
                ]);
另一个问题可能是由侧视图中的局部视图引起的。例如,当您从控制器内部调用view:channel时,您可以这样调用视图

<?=$this->render('your_view')?>
所以,您应该像这样将变量传递给这个视图

<?=$this->render('your_view',['queryAvatar'=>$queryAvatar])?>
   <div><?php print_r($queryAvatar); ?></div> // THE LINE I ADD
最后,您不能回显变量$queryAvatar,因为它是对象数组。因此,请使用函数print\r

像这样

<?=$this->render('your_view',['queryAvatar'=>$queryAvatar])?>
   <div><?php print_r($queryAvatar); ?></div> // THE LINE I ADD

该问题可能是由于在提交给视图之前创建变量数组时出现空格引起的

return $this->render('channel', [
                'model' => $this->findModel($id),
                'queryAvatar  '=> $queryAvatar ,
            ]);
从“queryAvatar”中删除空间 像这样:

return $this->render('channel', [
                    'model' => $this->findModel($id),
                    'queryAvatar'=> $queryAvatar ,
                ]);
另一个问题可能是由侧视图中的局部视图引起的。例如,当您从控制器内部调用view:channel时,您可以这样调用视图

<?=$this->render('your_view')?>
所以,您应该像这样将变量传递给这个视图

<?=$this->render('your_view',['queryAvatar'=>$queryAvatar])?>
   <div><?php print_r($queryAvatar); ?></div> // THE LINE I ADD
最后,您不能回显变量$queryAvatar,因为它是对象数组。因此,请使用函数print\r

像这样

<?=$this->render('your_view',['queryAvatar'=>$queryAvatar])?>
   <div><?php print_r($queryAvatar); ?></div> // THE LINE I ADD

在您的代码中,您将$cchannel定义为新模型,因此它是空的,$cchannel->uid是空的。是的,但我得到了错误:未定义变量:QueryAvatar由于查询返回空值,where子句是这样的:where uid=您必须定义$cchannel=$this->findModel$id,而不是$cchannel=new Channel;我回答,所以你可以投票给我:在你的代码中,你定义$cchannel为新模型,所以它是空的,$cchannel->uid是空的。是的,但我得到了错误:未定义变量:QueryAvatar因为查询返回空值,where子句是这样的:where uid=您必须定义$cchannel=$this->findModel$id,而不是$cchannel=new Channel;我回答你,所以你可以投票给我: