在laravel中使用mysql查询计算行数

时间:2016-12-19 09:48:58

标签: php mysql laravel

我尝试使用Laravel count()函数来获取行数。我有下面的代码来计算2个连接表的行数。

示例1:

$row = DB::table('log_user_login')
                ->select(DB::raw('log_user_login.Password as LogPassword'), 'user.*')
                ->join('user', 'log_user_login.Username', '=', 'user.Username')
                ->where('log_user_login.LoginSession', '!=', '')
                ->groupBy('user.ID')
                ->get();
$count = sizeof($row);

示例2:

$count = DB::table('log_user_login')
            ->select(DB::raw('log_user_login.Password as LogPassword'), 'user.*')
            ->join('user', 'log_user_login.Username', '=', 'user.Username')
            ->where('log_user_login.LoginSession', '!=', '')
            ->groupBy('user.ID')
            ->count();

当我echo $count形成示例1时,$count的数量是15415.但是示例2的$count返回89.我可以知道为什么会发生这种情况,我怎么能得到不使用get()的行数?

3 个答案:

答案 0 :(得分:3)

示例1以字节为单位显示sizeof数组,但是示例2显示了table返回的总计数。

因此,获得总计数的最佳方法是使用 - > count(),如示例2所示。

希望你得到答案。

答案 1 :(得分:1)

Please try it.
$row = DB::table('log_user_login')
                ->select(DB::raw('log_user_login.Password as LogPassword'), 'user.*')
                ->join('user', 'log_user_login.Username', '=', 'user.Username')
                ->where('log_user_login.LoginSession', '!=', '')
                ->groupBy('user.ID')
                ->get();
echo $count = count($row);

答案 2 :(得分:0)

不要使用sizeof()。这么多时间分配的内存返回量。

使用count()代替sizeof()。