当前位置: 首页 > 知识库问答 >
问题:

Laravel查询生成器计数

万俟承望
2023-03-14

我正在使用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();

计算“Freestyle ID”在likes表中出现的次数。

这有可能吗?返回的数据是完美的,我只需要一个自由泳的喜欢量,其中喜欢表中的自由泳ID为空。

共有2个答案

柯子琪
2023-03-14

我认为您应该能够使用原始表达式,如下所示:

$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();
颜宸
2023-03-14

像这样的东西:

$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();
 类似资料:
  • 我有一个问题,使laravel查询: 我想举个例子: 我有这个但不起作用:

  • 我想在查询生成器laravel中orderBy 因为我的是类型 所以当它排序的时候...结果远远不是我想要的... 我的剧本就像这样 我已经试过了 我如何铸造OrderBy查询生成器,以便我可以排序desc

  • 我试图从一个表中选择所有结果,并在用户ID匹配时与另一个表合并。 我有三个表:runs、users和一个run\u用户透视表。我想从数据透视表中的“运行”和其他列(即“已完成”、“粘性”、“上次测试”和“难度”)中选择所有结果,但只从当前用户的“运行用户”中提取数据。 在原始SQL中,我通过一个带有AND语句的左连接成功地做到了这一点: 如何通过查询生成器执行此操作,有何建议?我可以在Larave

  • 我有一张这样的桌子- 因此,我有一个特殊的数据类型()用于。 原始select查询如下所示- 结果是- 我想在带有查询生成器的Laravel中使用它,以便()这2个点可以来自用户输入。 我所做的是- 但它不起作用。 有人能帮忙吗?

  • 我一直在理解Laravel查询生成器和纯SQL之间的融合。 我有2张桌子: user:包含具有主键的用户 User_Action:这是一个表,其中包含由和动作的组成的PRIMARYs记录。 ex: 使用者 用户操作 我的需要: 现在我想检索一个用户列表,其中包含每个用户的最新操作。因此,我只需要在从到的连接中获取一行,并且这一行必须是具有最新日期时间的一行。我的前任也是如此;我只想获取dateti

  • 我对Laravel很陌生,尤其是在从数据库检索东西时。在阅读了他们关于query builder的文档后,我找到了一个部分,其中显示了执行我所需操作的示例代码: 如果不需要整行,可以使用value方法从记录中提取单个值。此方法将直接返回列的值: