Laravel 5.1 通过 having 或 having 使用计数、求和、分组
Laravel 5.1 use count,sum, group by having or having
请帮忙,我怎样才能将代码传输到查询生成器?
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) ) ;
谢谢
我无法测试查询,所以我临时尝试了一些东西。
$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();
如果您发现任何错误post他们在这里是为了帮助您
请帮忙,我怎样才能将代码传输到查询生成器?
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) ) ;
谢谢
我无法测试查询,所以我临时尝试了一些东西。
$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();
如果您发现任何错误post他们在这里是为了帮助您