Search 在Yii中搜索相关模型

Search 在Yii中搜索相关模型,search,yii,cgridview,Search,Yii,Cgridview,我在Yii中搜索时遇到问题。我有两种模式:团队和工人。在网站上有一个名为“TeamWorkers”的页面,我想在其中显示CGridView小部件,搜索时显示团队中的工作人员(团队id作为\u GET参数传递) 我在TeamsController中这样做: public function actionWorkers($id) { $model = Teams::model()->findByPk($id); $workers = Workers::model(); $

我在Yii中搜索时遇到问题。我有两种模式:
团队
工人
。在网站上有一个名为“TeamWorkers”的页面,我想在其中显示CGridView小部件,搜索时显示团队中的工作人员(团队id作为
\u GET
参数传递)

我在
TeamsController
中这样做:

public function actionWorkers($id)
{
    $model = Teams::model()->findByPk($id);
    $workers = Workers::model();
    $workers->unsetAttributes();
    if(isset($_GET['Workers']))
    {
        $_GET['Workers']['idTeam'] = $id;
        $workers->attributes = $_GET['Workers'];
    }
    else {
        $workers->attributes = array('idTeam' => $id);
    }

    $teamWorkers = $workers;
    $this->render('workers', array(
        'model' => $model,
        'teamWorkers' => $teamWorkers
    ));
}
并在视图文件中:

<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'team-workers-grid',
'dataProvider'=>$teamWorkers->search(),
'filter' => $teamWorkers,
'columns'=>array(
    'name',
    'surname',
    array(
        'id' => 'idWorker',
        'class' => 'CCheckBoxColumn',
        'checked' => '$data->confirmer',
        'selectableRows' => '2',
        // 'headerTemplate' => '{item}'
    )
),
)); ?>
当我不设置
idTeam
属性时,它可以正常工作。这很奇怪——在常规的CRUD
admin
page中,
idTeam
属性被传递,并且工作正常

热处理它?

工人::搜索()中

$criteria->compare('idTeam',$this->idTeam);
换成

$criteria->compare('t.idTeam',$this->idTeam);
i、 e如果sql属性来自当前模型,则使用
t.
前缀;如果来自其他表/模型,则使用关系名称前缀


也不是:

$workers->attributes = array('idTeam' => $id);
您可以通过以下方式简化:

$workers->idTeam = $id;

您已经在
Team
Workers
中定义了列
idTeam
。通过连接这些表,结果中将有一个重复的(“不明确”)列。这就是错误消息告诉您的


要解决此问题,必须为其中一列使用别名

请将代码张贴在正在进行加入的位置。很可能是搜索方法。
$workers->idTeam = $id;