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 回答