为什么select count distinct在yii中不起作用?

为什么select count distinct在yii中不起作用?,select,yii,distinct,Select,Yii,Distinct,有人能告诉我为什么这不工作,我的意思是,选择不同的不工作,它没有正确计数 $count_participants = BridgeMeeting::Model()->with('idUserRegistry')->count(array( 'condition' => 'id_meeting=:id_meeting', 'select' => 'id_user_registry', 'distinct' => true, 'param

有人能告诉我为什么这不工作,我的意思是,选择不同的不工作,它没有正确计数

$count_participants = BridgeMeeting::Model()->with('idUserRegistry')->count(array(
    'condition' => 'id_meeting=:id_meeting',
    'select' => 'id_user_registry',
    'distinct' => true,
    'params' => array(
        "id_meeting" => $data->id_meeting
    ),
        ));
计数

公共字符串计数(混合$condition='',数组$params=array())

因此,尝试将
params
作为数组传递给第二个count方法的参数

前。

更新:
计数
->with
组合使用时无法正常工作。必须报告一个bug

解决办法是:

                 BridgeMeeting::Model()->with('idUserRegistry')->count(
                     array(
                        'condition' => 'id_meeting=' . $data->id_meeting,
                        'select' => 'id_user_registry',
                        'distinct' => true,

                        )
                     );
要调试这个,请尝试使用常量而不是
$data->id\u meeting

$count_participants = BridgeMeeting::Model()->with('idUserRegistry')->count(array(
    'condition' => 'id_meeting=:id_meeting',
    'select' => 'id_user_registry',
    'distinct' => true,
    'params' => array(
        ":id_meeting" => $data->id_meeting
    ),
        ));

参数名称也应该是
:id\u meeting

深入查看Yii的代码,我发现为
计数(不同)
指定任意列列表的唯一方法是为CDBC标准提供如下“选择”:

$count_participants = BridgeMeeting::Model()->with('idUserRegistry')->count(array(
    'condition' => 'id_meeting=:id_meeting',
    'select' => 'id_user_registry',
    'distinct' => true,
    'params' => array(
        ":id_meeting" => $data->id_meeting
    ),
        ));
$ar->count(
'select' => 'count(distinct <columns>)',
'condition' => ...,
'params' => ...
);
$ar->count(
'选择'=>'计数(不同)',
“条件”=>。。。,
“参数”=>。。。
);

这会生成什么样的SQL?请提供生成的错误或SQL错误,以便我们了解实际执行的操作。没有错误,它工作正常,只是没有进行选择区分。我建议启用日志记录,并查看生成的SQL是否符合您的预期:我收到此错误您知道它的含义吗?CDbCommand无法执行SQL语句:SQLSTATE[HY093]:参数编号无效:未绑定任何参数。执行的SQL语句是:在(
t
)上选择DISTINCT COUNT(DISTINCT
t
)从
tbl\u桥会议
t
左侧外部联接
tbl\u用户注册表
)其中(id_meeting=:id_meeting)嗯,你是对的,它不识别参数,我确认这个yii问题。我将使用“变通解决方案”更新答案选择“=>”count(distinct)”-当我想计算distinct column时,这是为我做的,我真的认为这是没有必要的。。我没有把
放在我的项目中,一切都很好。