根据数组选择数据

时间:2019-01-16 11:16:54

标签: laravel laravel-5

我有一个来自查询的数组,如下所示:

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();

但这不是该查询中唯一的错误。

2 个答案:

答案 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();;