Laravel查询构建器计数

时间:2016-03-18 09:44:20

标签: php mysql laravel query-builder

我使用Laravels查询构建器检索带有一些过滤器选项的项目列表 - 我需要在此查询中进行计数:

        $f = DB::table('Likes')
            ->join('Freestyle', 'Likes.FreestyleID', '=', 'Freestyle.id')
            ->join('Beat', 'Freestyle.BeatId', '=', 'Beat.id')
            ->join('Track', 'Beat.TrackId', '=', 'Track.id')
            ->join('Genre', 'Track.GenreId', '=', 'Genre.id')
            ->select('Likes.freestyleID as likeFreestyleID', 'Freestyle.*', 'Beat.TrackId as UseMeForTrack',
    'Genre.id as GenreID')
            ->where('Freestyle.Active', '1')
            ->where('Freestyle.created_at', '>', "$dateScope")
            ->whereNull('Freestyle.deleted_at')
            ->whereIn('GenreID', $request->genre)
        ->first();

计算' FreestyleID'的次数。出现在喜欢的表格中。

这可能吗?返回的数据是完美的我只需要喜欢自由式的数量,其中like表中的FreestyleID为空。

2 个答案:

答案 0 :(得分:0)

这样的事情:

$f = DB::table('Likes')
                ->join('Freestyle', 'Likes.FreestyleID', '=', 'Freestyle.id')
                ->join('Beat', 'Freestyle.BeatId', '=', 'Beat.id')
                ->join('Track', 'Beat.TrackId', '=', 'Track.id')
                ->join('Genre', 'Track.GenreId', '=', 'Genre.id')
                ->select('Likes.freestyleID as likeFreestyleID','count(Likes.FreestyleID)', 'Freestyle.*', 'Beat.TrackId as UseMeForTrack',
        'Genre.id as GenreID')
                ->where('Freestyle.Active', '1')
                ->where('Freestyle.created_at', '>', "$dateScope")
                ->whereNull('Freestyle.deleted_at')
                ->whereIn('GenreID', $request->genre)
            ->first();

答案 1 :(得分:0)

我认为你应该可以使用这样的raw expression

$f = DB::table('Likes')
  ->join('Freestyle', 'Likes.FreestyleID', '=', 'Freestyle.id')
  ->join('Beat', 'Freestyle.BeatId', '=', 'Beat.id')
  ->join('Track', 'Beat.TrackId', '=', 'Track.id')
  ->join('Genre', 'Track.GenreId', '=', 'Genre.id')
  ->select(DB::raw('COUNT(likes.FreestyleID) as num_likes'), 'Likes.freestyleID as likeFreestyleID', 'Freestyle.*', 'Beat.TrackId as UseMeForTrack',
'Genre.id as GenreID')
  ->where('Freestyle.Active', '1')
  ->where('Freestyle.created_at', '>', "$dateScope")
  ->whereNull('Freestyle.deleted_at')
  ->whereIn('GenreID', $request->genre)
  ->groupBy('Freestyle.id')
  ->first();
相关问题