Php CGridView及相关表

Php CGridView及相关表,php,yii,Php,Yii,我试图列出指定用户的CGridView帖子,但给出了错误信息。这样做的正确方法是什么 Controller.php public function actionListPosts($id) { $criteria = new CDbCriteria; $criteria->with=array('posts'); $criteria->condition='t.id=:user_id'; $criteria->params=array(':use

我试图列出指定用户的
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',
    ),
)); ?>

在控制器操作中,您可以编写---

从这个角度来看,你可以写作---


在这里,我假设ur Posts表中的字段为(post_id,post_名称)


我希望它能在你的情况下起作用。

在控制器操作中,你可以编写---

从这个角度来看,你可以写作---


在这里,我假设ur Posts表中的字段为(post_id,post_名称)


我希望它在您的情况下有效。

您必须使用
Post
模型的数据提供程序,而不是
用户
模型

内部控制器

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',
    ),
)); ?>

您必须使用
Post
模型的数据提供程序,而不是
用户
模型

内部控制器

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',
    ),
)); ?>


如果您还希望能够按此列搜索和排序,请尝试

如果您还希望按此列搜索和排序,请尝试

您必须将数据提供程序与post模型一起使用,不适用于用户model@dInGd0nG我不能使用这样的关系?我是否应该使用
dataProvider
Post
模型并添加
$criteria->condition='t.user\u id=$id'
?这是正确的方法吗?是的。您可以通过执行以下操作缩短条件:
$criteria->compare('t.user\u id',$id)。该表示法将自动使用参数绑定,为您节省一个步骤。@dInGd0nG您应该添加一个答案,以便Luciana能够接受它,并且可以关闭此问题。您必须将数据提供程序与post模型一起使用,不适用于用户model@dInGd0nG我不能使用这样的关系?我是否应该使用
dataProvider
Post
模型并添加
$criteria->condition='t.user\u id=$id'
?这是正确的方法吗?是的。您可以通过执行以下操作缩短条件:
$criteria->compare('t.user\u id',$id)。该表示法将自动使用参数绑定,为您节省一个步骤。@dInGd0nG您应该添加一个答案,以便Luciana可以接受它,并且这个问题可以结束。
<?php $this->widget('zii.widgets.grid.CGridView',array(
    'id'=>'events-grid',
    'dataProvider'=>$dataProvider,
    'columns'=>array(
        'id',
        'name',
    ),
)); ?>