2013-03-14 109 views
4

有人可以告诉我为什么这不起作用,我的意思是,选择不同的工作不正常计数;为什么在yii中select count 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 
    ), 
     )); 
+0

这会产生什么SQL? – Kai 2013-03-14 12:05:16

+0

提供生成的错误或SQL错误,以便我们可以了解实际完成的操作。 – 2013-03-14 13:25:30

+0

有没有错误是,它工作正常它只是没有做选择不同 – Gunnit 2013-03-14 15:52:51

回答

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

+0

我真的不认为这是必要的..我不把':'放在我的项目中,一切都很好。 – Arth 2014-10-02 15:27:33

1

countapi

公共字符串计数(混合$条件= '',阵列$ PARAMS =阵列())

所以尝试通过params作为数组和第二个计数方法的参数。

ex。

$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

+1

我得到这个错误,你知道它是什么意思? CDbCommand无法执行SQL语句:SQLSTATE [HY093]:无效的参数编号:未绑定任何参数。执行的SQL语句是:SELECT DISTINCT COUNT(DISTINCT't'.'id_bridge_meeting')FROM'tbl_bridge_meeting''t' LEFT OUTER JOIN'tbl_user_registry'' idUserRegistry' ON('t'.''_user_registry' ='idUserRegistry'.' id_user_registry')WHERE(id_meeting =:id_meeting) – Gunnit 2013-03-15 09:30:23

+0

恩,你是对的,它不能识别参数,我确认这个yii的问题。我会在工作中更新答案。 :) – devBinnooh 2013-03-15 10:19:03

2

挖掘到的Yii的代码我想出了可以指定任意列列表count(distinct <columns>)的唯一方法是为CDbCriteria a提供'select' s如下:

$ar->count(
'select' => 'count(distinct <columns>)', 
'condition' => ..., 
'params' => ... 
); 
+0

谢谢你的评论会派上用场。 – Gunnit 2013-11-21 12:03:47

+0

'select'=>'count(distinct )' - 当我想要计算不同的列时为我做了诀窍 – WallTearer 2014-05-14 13:48:48

相关问题