Php 如何在Yii中的筛选器中指定tablename?

Php 如何在Yii中的筛选器中指定tablename?,php,mysql,yii,Php,Mysql,Yii,有两个表,attendee和group。两者都有一个gender字段。每个与会者被分配到一个小组。我的CGridView成功地显示了与会者的人数,但是当我添加代码以过滤性别时,我得到了以下错误。要计算组中的与会者数量,我手动执行加入;但是,联接使“性别”字段变得模棱两可。有没有办法在筛选器中指定它应该使用“t”或基表 当我加载视图时,它运行正常;当我单击对性别进行排序时,会显示以下消息: 错误消息 视图代码 $this->widget('zii.widgets.grid.CGridView',数

有两个表,
attendee
group
。两者都有一个
gender
字段。每个与会者被分配到一个小组。我的
CGridView
成功地显示了与会者的人数,但是当我添加代码以过滤性别时,我得到了以下错误。要计算组中的与会者数量,我手动执行加入;但是,联接使“性别”字段变得模棱两可。有没有办法在筛选器中指定它应该使用“t”或基表

当我加载视图时,它运行正常;当我单击对性别进行排序时,会显示以下消息:

错误消息 视图代码
$this->widget('zii.widgets.grid.CGridView',数组(
'id'=>'group-grid',
'dataProvider'=>$model->search(),
“过滤器”=>$model,
'列'=>数组(
“姓名”,
排列(
'姓名'=>'性别',
“value'=>”组::$genderLabels[$data->gender],
'filter'=>组::$genderLabels,//啊!我知道了

更改了型号代码中的此行:

$criteria->compare('gender',$this->gender,true);

$criteria->compare('t.gender',$this->gender,true);

>     Error 500: <h1>CDbException</h1>
>     <p>CDbCommand failed to execute the SQL statement: SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'gender'
> in where clause is ambiguous. The SQL statement executed was: SELECT
> COUNT(*) FROM (SELECT t.*, IFNULL( count(tbl_attendee.id), 0) as
> attendeeCount FROM `tbl_group` `t` LEFT JOIN tbl_attendee ON
> tbl_attendee.group_id = t.id WHERE gender LIKE :ycp0 GROUP BY t.id) sq
> (/Applications/MAMP/htdocs/yiiroot/framework/db/CDbCommand.php:516)</p><pre>#0
> /Applications/MAMP/htdocs/yiiroot/framework/db/CDbCommand.php(411):
> CDbCommand->queryInternal('fetchColumn', 0, Array)
$criteria=new CDbCriteria;
$criteria->compare('name',$this->name,true);
$criteria->compare('gender',$this->gender,true);                
$criteria->compare('agegroup',$this->agegroup,true);
$criteria->select = 't.*, IFNULL( count(tbl_attendee.id), 0) as attendeeCount';
$criteria->join = 'LEFT JOIN tbl_attendee ON tbl_attendee.group_id = t.id';
$criteria->group = 't.id';

$sort = new CSort();
$sort->attributes = array(
    'attendeeCount'=>array(
    'asc'=>'attendeeCount ASC',
    'desc'=>'attendeeCount DESC',
    ),
    '*', // add all of the other columns as sortable
);

return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
'sort'=>$sort,
));
$this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'group-grid',
    'dataProvider'=>$model->search(),
    'filter'=>$model,
    'columns'=>array(
       'name',
       array(
        'name'=>'gender',
        'value'=>'Group::$genderLabels[$data->gender]',
        'filter'=>Group::$genderLabels, // <-- This is the filter that breaks.
                                        // $genderLabels = array('Female','Male);
    ),