首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel 5.1通过having或having使用count、sum、group

Laravel 5.1通过having或having使用count、sum、group
EN

Stack Overflow用户
提问于 2016-09-12 20:10:58
回答 1查看 1.8K关注 0票数 1

请帮助,我如何将这些代码转移到查询构建器?

代码语言:javascript
复制
SELECT *,
       SUM(used_count),COUNT(code)
FROM promo_codes pc 
LEFT JOIN promo_code_user pcu on pc.id=pcu.`promo_code_id` 
LEFT JOIN promo_code_types pct on pc.`promo_code_type_id`=pct.id 
WHERE (pc.expiry_date >= CURDATE() or pc.expiry_date is NULL) and
      (pct.expiry_date >= CURDATE() or pct.expiry_date is null) 
GROUP BY code
HAVING ( (sum(used_count) < global_max_uses  or sum(used_count) is null) and
       ( count(code) < max_users  or count(code) is null) ) ;

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-12 21:42:12

我不能测试查询,所以我尝试了一些东西。

代码语言:javascript
复制
$promo = DB::table('promo_codes')
    ->select(‘*’,DB::raw('SUM(used_count),COUNT(code)'))
    ->leftjoin('promo_code_user','promo_codes.id','=','promo_code_user.promo_code_id')
    ->leftjoin('promo_code_types','promo_codes.promo_code_type_id','=','promo_code_types.id')
    ->where(function ($query) {
            $query->where('promo_codes. expiry_date', '>=',DB::raw('curdate()'))
                  ->orWhereNull('promo_codes.expiry_date');
        })
    ->where(function ($query) {
            $query->where('promo_code_types.expiry_date', '>=', DB::raw('curdate()'))
                  ->orWhereNull('promo_code_types.expiry_date');
        })
    ->groupBy('code')
    ->havingRaw((sum(used_count) < global_max_uses  or sum(used_count) is null) and
   ( count(code) < max_users  or count(code) is null)
)->get();

如果您发现任何错误,请将它们张贴在此处,以帮助您

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39450018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档