Mysql Laravel 5.1通过拥有或拥有使用计数、总和、分组
请帮助,我如何将这些代码传输到查询生成器Mysql Laravel 5.1通过拥有或拥有使用计数、总和、分组,mysql,laravel,orm,query-builder,Mysql,Laravel,Orm,Query Builder,请帮助,我如何将这些代码传输到查询生成器 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()
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) ) ;
选择*,
总和(已用计数)、计数(代码)
从促销代码pc
左侧加入pc上的促销代码用户pcu.id=pcu.`促销代码id`
左键连接pc上的促销代码类型pct.`促销代码类型\U id`=pct.id
其中(pc.expiration\u date>=CURDATE()或pc.expiration\u date为空)和
(pct.expiration\u date>=CURDATE()或pct.expiration\u date为空)
按代码分组
(sum(used_count)
谢谢我无法测试该查询,所以我在运行中尝试了一些东西
$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();
$promo=DB::table('promo_code'))
->选择('*',DB::raw('SUM(used_count),count(code)'))
->leftjoin('promo\u code\u user'、'promo\u code.id'、'='、'promo\u code\u user.promo\u code\u id')
->leftjoin('promo_code_types'、'promo_codes.promo_code_type_id'、'='、'promo_code_types.id')
->其中(函数($query){
$query->where('promo_code.expiration_date','>=',DB::raw('curdate()'))
->或wherenull(“促销代码、到期日”);
})
->其中(函数($query){
$query->where('promo\u code\u types.expiration\u date','>=',DB::raw('curdate()'))
->或wherenull(“促销代码类型、到期日”);
})
->groupBy('代码')
->havingRaw((sum(used_count)get();
如果您发现任何错误,请将其发布到此处以帮助您我无法测试查询,因此我尝试了一些动态操作
$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();
$promo=DB::table('promo_code'))
->选择('*',DB::raw('SUM(used_count),count(code)'))
->leftjoin('promo\u code\u user'、'promo\u code.id'、'='、'promo\u code\u user.promo\u code\u id')
->leftjoin('promo_code_types'、'promo_codes.promo_code_type_id'、'='、'promo_code_types.id')
->其中(函数($query){
$query->where('promo_code.expiration_date','>=',DB::raw('curdate()'))
->或wherenull(“促销代码、到期日”);
})
->其中(函数($query){
$query->where('promo\u code\u types.expiration\u date','>=',DB::raw('curdate()'))
->或wherenull(“促销代码类型、到期日”);
})
->groupBy('代码')
->havingRaw((sum(used_count)get();
如果您发现任何错误,请将其张贴在此处,以帮助您小心,您同时使用了“和”字符,什么将以错误结束。我将它们替换为它工作正常,但我会导致另一个问题,我不能使用带havingRaw的paginate。如果您将get()替换为paginate(),这是错误消息?是的,我刚从stackoverflow检查过,知道不能使用paginate和querry,只是修复了。谢谢你小心,你同时使用了'and'字符,什么会以错误告终。我替换了它们。它很好,但我造成了另一个问题,我不能用havingRaw来使用paginate,如果你用paginate()替换get(),这是错误消息?是的,我刚从stackoverflow检查过,知道不能用带有query的paginate,刚刚修好。非常感谢。