我有下一个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数组?
答案 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).")
(...)"