4

有人可以告诉我为什么这不起作用,我的意思是 select distinct 不起作用,计数不正确;

$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
    ),
        ));
4

3 回答 3

3
$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_meeting

于 2013-03-15T12:13:09.530 回答
2

深入研究 Yii 的代码,我发现可以指定任意列列表的唯一方法count(distinct <columns>)是为 CDbCriteria 提供“选择”,如下所示:

$ar->count(
'select' => 'count(distinct <columns>)',
'condition' => ...,
'params' => ...
);
于 2013-11-19T06:42:05.040 回答
1

count api

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

所以尝试将params ' 作为数组传递给第二个 count 方法的参数。

前任。

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

更新: count结合在一起->with不能正常工作。必须报告一个错误。

解决方法是:

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

                        )
                     );

并调试这个尝试给出常量而不是$data->id_meeting

于 2013-03-14T17:24:44.893 回答