使用连接查询时非法字符串偏移'id'

时间:2018-01-19 11:24:38

标签: php mysql yii

我在Yii框架中遇到了一些问题。我需要在我的视图页面pdtview中显示连接查询结果。但是在显示这个结果数组时出现错误。这是我的controller page code。< / p>

public function actionPdtview()
   {
        $model=new Products;
        $models=Products::model()->findAll();

        $rows = Yii::app()->db->createCommand()
        ->select('category.ctg,category.cid, products.*')
        ->from('category')
        ->join('products','category.cid = products.cid')
        ->queryRow();
//    print_r($rows);die;
            $this->render('pdtview',array('model'=>$rows));

       }

并查看下面给出的页面代码

<table>
<tr>
    <th>sl.no</th>
    <th>Category</th>
    <th>Product</th>
</tr>


 <?php 
//    print_r($model);die;
      foreach($model as $row)
      {
    ?>
    <tr>
        <td><?php echo $row['id']; ?></td>
        <td><?php echo $row['ctg']; ?></td>
        <td><?php echo $row['pdt']; ?></td>
    </tr>
    <?php
      }
      ?>
</table>

我正在尝试使用print_r()显示查询结果然后更正获得的输出。但是在表格格式中,我得不到相同的结果。只能得到错误:Illegal string offsets 'id'。请帮我解决这个问题问题。谢谢所有人提前。

print_r($model)输出(来自评论):

Array ( 
    [ctg] => Flowers 
    [cid] => 1 
    [id] => 1 
    [pdt] => lilly 
)  

1 个答案:

答案 0 :(得分:0)

我认为你想使用queryAll因为queryRow只提取第一行。

public function actionPdtview()
   {
        $model=new Products;
        $models=Products::model()->findAll();

        $rows = Yii::app()->db->createCommand()
        ->select('category.ctg,category.cid, products.*')
        ->from('category')
        ->join('products','category.cid = products.cid')
        ->queryAll();
        //  print_r($rows);die;
            $this->render('pdtview',array('model'=>$rows));

       }

这可能会返回一个对象数组,您可以访问它们:

    <tr>
        <td><?php echo $row->id; ?></td>
        <td><?php echo $row->ctg; ?></td>
        <td><?php echo $row->pdt; ?></td>
    </tr>