【问题标题】:how to show an array of model in view yii framework如何在视图 yii 框架中显示模型数组
【发布时间】:2023-03-11 22:39:01
【问题描述】:

invoiceDB 中的一个视图,我想在 CGridView 表单中显示此视图信息
这是我的操作:

    public function actionInvoice()
    {
  $model= Invoice::model()->findAllBySql('select * from invoice where userid ='.Yii::app()->user->id);
  $this->render('invoice',array('model'=>$model));

}

这是我的观点:

<?php var_dump($model)   ?>
<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'UserAccountnumber-grid',

'dataProvider'=>$model->search(),

'filter'=>$model,
'columns'=>array(
    'amount',
    'time',
    'status',
                )        


)    



);
?>

但是当我运行这段代码时出现错误:

致命错误:在第 5 行的 C:\wamp\www\mypal\protected\views\user\invoice.php 中的非对象上调用成员函数 search()

我知道这个错误是因为我将模型数组发送到视图中,但我不知道如何弄清楚并在 CGridView 中显示模型数组
tnx

【问题讨论】:

    标签: php arrays yii


    【解决方案1】:

    为什么是findAllBySql

    可能

    Invoice::model()->findAllByAttributes([
        'userid' => Yii::app()->user->id
    ]);
    

    并且 findAllBySql 和 findAllByAttributes 返回 ActiveRecord 对象的数组。 如果您只想找到一行,请使用 findBySqlfindByAttributes

    但最好的方法:

    public function actionInvoice()
    {
        $dataProvider=new CActiveDataProvider('Invoice', array(
            'criteria'=>array(
                'condition' => 'userid=:userid',
                'params' => [':userid' => Yii::app()->user->id]
            ),
        );
        $this->render('invoice',array('provider'=>$dataProvider));
    }
    

    并查看:

    $this->widget('zii.widgets.grid.CGridView', array(
        'id'=>'UserAccountnumber-grid',
        'dataProvider'=>$provider,
        'columns'=>array(
             'amount',
             'time',
              'status',
        )
    ));
    

    【讨论】:

      【解决方案2】:

      尝试使用 CSqlDataProvider 获取数据提供者,并将其传递给 CGridView 小部件。

      http://www.yiiframework.com/doc/api/1.1/CSqlDataProvider

      $model->search() 自动生成的函数返回一个 CDataProvider,但您的 $model 不是 Model 类,是 SQL 查询的结果集。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-15
        • 1970-01-01
        • 2014-11-28
        • 1970-01-01
        • 1970-01-01
        • 2017-09-04
        相关资源
        最近更新 更多