3

次の SQL クエリがあります。

SELECT summary_table.device_id, WEEKDAY(summary_table.day) as day, AVG(summary_table.shows) as avg_shows
    FROM (
         SELECT device_id, day, sum(shows) as shows
         FROM statistics
         GROUP BY device_id, day
    ) as summary_table
    WHERE device_id IN (1,2,3) // Just for example
    GROUP BY device_id, WEEKDAY(day)

Laravelを使用してこれを実行するにはどうすればよいですか? このクエリを DB::select 関数に入れましたが、すべての ID を "WHERE device_id IN (?)" 条件に配置するにはどうすればよいですか? 「array(implode(',', $var))」を使用してみましたが、うまくいきません。「13、14」のような ID がある場合、ID = 13 の結果のみが得られます。

問題は、「?」の代わりにどのように配置するかです。IDの配列?

4

3 に答える 3

9

ここのドキュメントを見て、「Using Where In With An Array」までスクロールします。

http://four.laravel.com/docs/queries

このwhereInメソッドは配列を受け取るので、$var直接渡す必要はありません。内破する必要はありません。

->whereIn('device_id', $var)
于 2013-11-14T12:18:45.543 に答える
1

Laravel は PDO ライブラリを使用しています。悲しいことに、PDO とのバインドは では機能しませんWHERE IN。ここでそれについて読むことができます

したがって、次のように、準備された文字列をクエリに入れる必要があります。

"(...)
    WHERE device_id IN (".array(implode(',', $var)).")
    (...)"
于 2013-11-14T12:17:06.627 に答える
0
"(...)
    WHERE device_id IN (".implode(',', $var).")
    (...)"
于 2015-07-27T06:39:24.093 に答える