2016-09-11 4 views
1

このクエリは、mySQLクライアントで正常に動作します。 Laravelに入れるときには、それはここでLaravelは生のSQLクエリで 'SET'を使用できませんか?

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; 

を返すコードは次のとおりです。

$result = DB::connection('main') 
->select(" 
    SET @acc :=0; 
    SELECT a.date,@acc:[email protected]+sum AS total_shops FROM (
     SELECT DATE(created_at) AS date, SUM(IF(created_at BETWEEN '2016-08-08 17:00:00' AND '2016-09-05 16:59:59',1,0)) AS sum 
     FROM sales_product 
     WHERE status = 1 
     AND DATE(created_at) BETWEEN '2016-08-08 17:00:00' AND '2016-09-05 16:59:59' 
     GROUP BY DATE(created_at) 
    ) AS a 
"); 

それから私は ':= 0 SET @acc' を削除しようとしました。今回は、エラーはありません。しかし、代わりにtotal_shopsがNULLとして表示されます。

結果:

array:15 [ 
    0 => {#198 
     +"date": "2016-08-09" 
     +"total_shops": null 
    } 
    1 => {#205 
     +"date": "2016-08-10" 
     +"total_shops": null 
    } 
    2 => {#204 
     +"date": "2016-08-11" 
     +"total_shops": null 
    } 
] 

答えて

1

がそうのようなDB::raw()であなたのクエリ文字列をラップしてみてください。私のために

$result = DB::connection('main')->select(DB::raw("SET @acc :=0; ...")); 
+0

を作成します。それでも同じ構文エラーがあります。 – jap

+0

'SET @acc:= 0;'をそのままにして、クエリの変数への参照を削除するとどうなりますか?それでもエラーが出ますか? – Callam

+0

構文エラーです。 – jap

0

作品。

  1. 私がしようとしなかった第二の生のクエリ内のステートメント
  2. 呼び出し文を
 
DB::statement(DB::raw('set @rownum=0')); 
$orders = DB::select(DB::raw("SELECT @rownum := @rownum + 1 AS rownum,id)); 

$data['pacitan']=$orders; 
関連する問題