2013-01-24 37 views
0

我想列出與CGridView職位的指定用戶,但給錯誤。做這件事的正確方法是什麼?CGridView和相關表

Controller.php這樣

public function actionListPosts($id) 
{ 
    $criteria = new CDbCriteria; 
    $criteria->with=array('posts'); 
    $criteria->condition='t.id=:user_id'; 
    $criteria->params=array(':user_id'=>$id); 

    $dataProvider=new CActiveDataProvider('Users', array(
      'criteria' => $criteria 
    )); 

    $this->render('list',array(
     'dataProvider'=>$dataProvider, 
    )); 
} 

View.php:

<?php $this->widget('zii.widgets.grid.CGridView',array(
    'id'=>'events-grid', 
    'dataProvider'=>$dataProvider->posts, 
    'columns'=>array(
     'id', 
     'name', 
    ), 
)); ?> 

錯誤:

Property "CActiveDataProvider.posts" is not defined. 
+2

您必須使用數據提供程序與樁模型,而不是與用戶模型 – dInGd0nG

+0

@ dInGd0nG我不能使用這樣的關係? –

+0

我應該用'Post'模型'dataProvider'並添加'$ criteria-> condition ='t.user_id = $ id''?這是正確的方法? –

回答

1

必須使用數據提供程序爲Post模型來代替User模型

在控制器

public function actionListPosts($id) 
{ 
    $criteria = new CDbCriteria; 
    $criteria->condition='t.user_id=:user_id'; 
    $criteria->params=array(':user_id'=>$id); 

    $dataProvider=new CActiveDataProvider('Post', array(
      'criteria' => $criteria 
    )); 

    $this->render('list',array(
     'dataProvider'=>$dataProvider, 
    )); 
} 

,並鑑於

<?php $this->widget('zii.widgets.grid.CGridView',array(
    'id'=>'events-grid', 
    'dataProvider'=>$dataProvider, 
    'columns'=>array(
     'id', 
     'name', 
    ), 
)); ?> 
0

在控制器動作,你可以寫---

$dataProvider=new CActiveDataProvider('NameofPostTableAR',array(
    'criteria'=>array(
    'condition'=>'post_id='.$id,))); 

$this->render('list',array(
    'dataProvider'=>$dataProvider, 
)); 

,並考慮你可以寫---

<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'post-grid', 
'dataProvider'=>$dataprovider, 
'columns'=>array(
    'post_id', 
    'post_name', 
    array(
     'class'=>'CButtonColumn', 
    ), 
), 
)); ?> 

在這裏,我假設高壓領域的烏爾帖子表是(POST_ID,POST_NAME)

我希望它wrks在烏拉圭回合的情況下..