2013-04-01 3 views
2

저는 Laravel에서 초보자입니다. 적절한 SQL 문 (PHPMyAdmin과 Navicat에서 작동합니다)을 사용하면 결과를 얻을 수 있습니다. 내가하고 싶은 것은, 나는 DB :: raw();를 사용하지 않고 Laravel에서 그 진술을하고 싶다.올바른 SQL을 Laravel ORM

도움이 될 것입니다.

Select 
     rmm.message, 
     count(rmm.message) as number, 
     receivedTime as time 

    FROM 
      rcs rcs, rmm rmm 
    WHERE 
      rmm.smsCid = rcs.smsCid AND rmm.receivedTime LIKE '%2013-04-01%' AND length('rmm.message') > '3' 

    GROUP BY(rmm.message) 

답변

4

또는 Fluent Query Builder을 사용할 수 있습니다. 여기에 내 시도가 있습니다. 물론 데이터 구조가 없기 때문에 체크하지 않았습니다. 잘하면 충분히 당신이 시작하려면 :

DB::table('rcs') // SELECT FROM rcs 
    ->join('rmm', 'rmm.smsCid', '=', 'rcs.smsCid') // Simple INNER join 
    ->where('rmm.receivedTime', 'LIKE', '%2013-04-01%') 
    ->where(DB::raw('LENGTH(rmm.message)'), '>', 3) 
    ->get(array(DB::raw('COUNT(rmm.message)'), 'rmm.message', 'receivedTime')); // Get only the columns you want 
+1

RAW Sql을 DB :: raw()에 넣어야합니다. '-> (DB :: raw ('length (rmm.message)'), '>', 3)' –

+0

좋은 지적입니다! 내 대답을 – juco

+0

업데이트 해 주셔서 감사합니다. 짧은 SQL 별칭을 사용하고 싶습니다. Fluent Query Builder는 지원하지 않습니다. Laravel 정말 Codeigniter에서 오는 후에 일을 열심히하고 ... –

2

DB::query()을 사용하여 쿼리를 실행할 수 있습니다. 그러면 활성 데이터베이스 connection에 대한 쿼리 메서드가 호출됩니다.

+0

DB :: 쿼리() AS 제공하고 볼 부분에 대한 별칭 SQL을 카운트 또는 Laravel .... –

+0

충분한 문서 없기 때문에 나도 몰라하지 않습니다 @ OnderOZCAN 나는 별칭을 DB :: query()에서 성공적으로 사용했기 때문에 무슨 뜻인지 잘 모르겠습니다. 또한 Laravel에는 API 문서가 있습니다. http://laravel.com/api –

관련 문제