Laravel 4在DB :: select查询条件下

时间:2013-11-14 12:10:27

标签: php laravel

我有下一个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(?)"条件?我尝试使用"数组(implode(',',$ var))"但它不起作用。如果我有像#34; 13,14和#34;我只得到id = 13的结果。

所以问题是如何代替"?" ids数组?

3 个答案:

答案 0 :(得分:8)

在这里查看文档,向下滚动到“使用数组中的位置”:

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

whereIn方法采用数组,因此直接传入$var,无需内爆。

->whereIn('device_id', $var)

答案 1 :(得分:1)

Laravel正在使用PDO库。遗憾的是,与PDO绑定并不能与WHERE IN一起使用。你可以阅读它here.

所以你要做的就是在你的查询中放入准备好的字符串,如下所示:

"(...)
    WHERE device_id IN (".array(implode(',', $var)).")
    (...)"

答案 2 :(得分:0)

"(...)
    WHERE device_id IN (".implode(',', $var).")
    (...)"