2014-06-18 2 views
0

이 쿼리를 Eloquent에 상응하는 것으로 변환해야합니다.웅변 쿼리 빌더에 해당하는 mysql

SELECT country_id, count(*) as count 
FROM seeds 
WHERE seeds.created_at > date_sub(NOW(), interval 24 hour) 
GROUP BY country_id 

내가 지금까지 가지고있는 것.

$seed = Seed::select('*')->where("created_at", ">", DB::raw('(NOW() - INTERVAL 24 HOUR)')) 
     ->get(); 

country_id를 그룹화하고 각각의 양이 얼마나 많은지 나타내는 개수 열을 추가 할 수 없습니다.

답변

1

가독성을 높이기 위해 Laravel에 포함 된 Carbon도 함께 사용해보십시오.

Seed::select(array(
    'country_id', 
    DB::raw('COUNT(*) as count')) 
->where('created_at', '>', Carbon::now()->subHours(24)) 
->groupBy('country_id') 
->get(); 
+0

도움을 주셔서 감사합니다. – guillaume

0

groupBy 방법을 사용할 수 있습니다. 모든 방법은 여기에 있습니다 : http://laravel.com/docs/queries (대부분, 해당).

$seed = Seed::whereCreatedAt('>', DB::raw('(NOW() - INTERVAL 24 HOUR)'))->groupBy('country_id')->get(); 

당신이 수를 원하는 경우에 당신은 여기에서 $seed->count()을 바로 할 수 있고, 당신이 country_id의 목록을 원한다면 당신은 $seed->lists('country_id')을 할 수 있습니다.

희망이 있습니다.