0

我有以下方法:

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)

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

任何帮助,将不胜感激。

4

3 回答 3

1

你需要在你的控制器/动作中声明 $this->companyModel

$this->companyModel = Company::model()->findByPk($companyId);

使用 Company::model()->findAll() 你会得到一个 Company-Models 数组,你可以在你的视图文件中迭代。

foreach ($companyData as $companyModel) {
    var_dump($companyModel->attributes);
}
于 2013-07-08T09:09:22.370 回答
1

它正在发生,因为findAll()

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

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

如果您想要公司数据(单行),请像这样更改您的查询

         $companyModel = Company::model()->findByPk($id_Of_company); 
         //$companyModel is single dimensional array, it has all the info of a company. 

发送此查看

        $this->render('index', array(
        'companyData' => $companyModel,
        ....................
        ));

现在您可以使用以下代码显示数据

        echo $companyData->name . "\n";
        echo $companyData->phone . "\n";
        echo $companyData->fax . "\n";
        echo $companyData->cell . "\n";
于 2013-07-08T09:09:44.530 回答
0

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

在视图文件中,如图所示

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

有了这个,您可以从表中获取所有条目

如果要使用 Cdbcriteria 获取特定记录使用条件并传递对象并获取单个结果

于 2013-07-08T09:07:51.700 回答