我有一个来自查询的数组,如下所示:
metrics.latency.interval
现在,我需要编写一个查询,其中comp,是上面的查询。
array:84 [
0 => array:2 [
"comp" => "50007148"
"cus" => "F0401"
]
1 => array:2 [
"comp" => "50007148"
"cus" => "J0050"
]
2 => array:2 [
"comp" => "50007148"
"cus" => "L"
]
3 => array:2 [
"comp" => "50007148"
"cus" => "LT"
]
4 => array:2 [
"comp" => "50007148"
"cus" => "RP"
]
但是此查询不起作用。我收到如下错误:
$rslt = Stdetl::whereIn('comp, cus', $categories)
->where(YEAR(docdate), '=', 2019)
->get(SUM(number))->toArray();
但这不是该查询中唯一的错误。
答案 0 :(得分:0)
YEAR()
is a mysql function,则应使用whereRaw()
进行查询。像这样:
->whereRaw('YEAR(docdate) = 2019')
更新:
对于您的whereIn()
部分,您必须进行两个查询,每列一个。因此,您将必须从数组中获取正确的值。可以使用array_map
完成。
例如:
->whereIn('comp', array_map(function($cat) { return $cat['comp']; }, $categories))
->whereIn('cus', array_map(function($cat) { return $cat['cus']; }, $categories))
答案 1 :(得分:0)
您不能使用whereIn这样的方式
$rslt=Stdetl::whereIn('comp', $categories)
->whereIn('cus', $categories)
->where(date('Y', strtotime(docdate)), '=', 2019)
->get(SUM(number))->toArray();;