为什么与Laravel + Postgresql不同?

时间:2017-07-10 23:35:23

标签: php sql postgresql laravel laravel-5

我想计算 ONLY ONE COLUMN 上具有不同值的行数。例如,如果我的activities表中有email列,我想计算email列中具有不同值的列数。

我正在使用 Laravel + PostgreSQL 。我尝试了以下代码,但它计算了所有行!

$emailsCount = DB::table('activities')
    ->where('user_id',$UserId)
    ->distinct('email')
    ->count();

后来,我开始知道distinct()不会接受任何争论,我试图找到解决问题的方法,并且有人(其他Stackoverflow问题)建议我使用groupBy,如下所示代码。

$emailsCount = DB::table('activities')
    ->where('user_id',$UserId)
    ->groupBy('email')
    ->count();

但是它返回了错误的信息。例如,在我的情况下,它会返回1,但我可以在email列中看到很多不同的电子邮件。我不知道什么是错的。我怎样才能以正确的方式做到这一点?

1 个答案:

答案 0 :(得分:1)

如你所说distinct()不接受任何参数,而是可以将该参数传递给count方法,如下所示:

$emailsCount = DB::table('activities') 
                   ->where('user_id',$UserId) 
                   ->distinct() 
                   ->count(["email"]);