2016-09-12 6 views
1

도와주세요, 내가 빌더에 쿼리 코드를 어떻게 전송할 수 있습니까? Laravel 5.1 가지고 있거나 가지고있는 카운트, 합계, 그룹을 사용하십시오

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)) ; 

그래서 나는 즉석에서 뭔가를 시도하면

답변

0

내가 쿼리를 테스트 할 수 없습니다 감사합니다.

$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(); 

당신은 어떤 오류가 당신에게 내가 당신을 위해 좋은 아이디어를 데

+1

'및'문자를 모두 사용하고 있으므로 오류가 발생하면 종료됩니다. – vpedrosa

+0

나는 그들을 대체했다 –

+0

괜찮 았어,하지만 다른 문제가 발생, 여기는 havingRaw와 함께 페이지 매김을 사용할 수 없다 –

0

를 돕기 위해, 당신은 단순히 이것 좀 봐, 어떤 변화없이 laravel에서이 쿼리를 사용할 수 있습니다 여기에 그들을 게시하시기 바랍니다 발견하면

$results = DB::select(DB::raw("Write Your Query Here ")); 
//this will return an array of results , and you can also add parameters to the query as you like