2013-07-08 80 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"; 
相關問題