2013-07-08 60 views
0

我有以下方法:如何使用模型对象的Yii控制器和视图

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"; 

任何帮助,将不胜感激。

回答

0

您正试图从数据库中获取所有条目作为findAll()返回多维对象数组中的所有数据。如果需要所有条目,则可以在视图文件中遍历它,并将结果作为显示

在查看文件,如

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

有了这个你做表中的所有条目

如果你想使用CDBC特定记录使用条件riteria并传递对象,并得到一个结果

1

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

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

与公司::模式() - >的findAll(),你得到一个您可以在视图文件中迭代的公司模型阵列。

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

其是发生becoz 的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"; 
相关问题