Activerecord 如何在Yii控制器和视图中使用模型对象

Activerecord 如何在Yii控制器和视图中使用模型对象,activerecord,yii,php,yii-cmodel,Activerecord,Yii,Php,Yii Cmodel,我有以下方法: public function actionIndex() { $companyModel = Company::model()->findAll(); $supplierProductModel = SupplierProduct::model()->findAll(); $this->render('index', array( 'companyData' =&g

我有以下方法:

public function actionIndex() {

        $companyModel = Company::model()->findAll();          
        $supplierProductModel = SupplierProduct::model()->findAll();

        $this->render('index', array(
            'companyData' => $companyModel,
            'supplierProductData' => $supplierProductModel,
        ));
    }
在这里,我已将模型对象传递给渲染函数,并希望在视图中访问这些对象(活动关系类型),但当我在视图中访问时,显示错误:

Trying to get property of non-object 
查看文件(index.php)


任何帮助都将不胜感激。

您正试图从数据库中获取所有条目,因为findAll()返回多维对象数组中的所有数据。如果您需要所有条目,可以在视图文件中对其进行迭代,并获得如图所示的结果

<?php foreach($companyData as $value){
  echo $vlaue->name . "\n";
  echo $value->phone . "\n";
  echo $value->fax . "\n";
  echo $value->cell . "\n";
 ?>
在视图文件中,执行如图所示的操作

<?php foreach($companyData as $value){
  echo $vlaue->name . "\n";
  echo $value->phone . "\n";
  echo $value->fax . "\n";
  echo $value->cell . "\n";
 ?>

这样,您就可以从表中获得所有条目


如果要使用Cdbcriteria获取特定的记录使用条件,并传递对象并获得单个结果,则需要在控制器/操作中声明$this->companyModel

$this->companyModel = Company::model()->findByPk($companyId);
使用Company::model()->findAll()可以获得一组公司模型,您可以在视图文件中进行迭代

foreach ($companyData as $companyModel) {
    var_dump($companyModel->attributes);
}

这是因为findAll()

findAll()在多维数组中重新运行公司表的所有行,因此 $companyData多维数组,现在更改索引中的代码,如下所示:

        <?php
        foreach ($companyData as $compSub)
        {
            echo $compSub->name . "\n";
            echo $compSub->phone . "\n";
            echo $compSub->fax . "\n";
            echo $compSub->cell . "\n";
        }
        ?>
将此发送到视图

        $this->render('index', array(
        'companyData' => $companyModel,
        ....................
        ));
现在您可以使用下面的代码显示数据

        echo $companyData->name . "\n";
        echo $companyData->phone . "\n";
        echo $companyData->fax . "\n";
        echo $companyData->cell . "\n";
        echo $companyData->name . "\n";
        echo $companyData->phone . "\n";
        echo $companyData->fax . "\n";
        echo $companyData->cell . "\n";