首页 > 解决方案 > 根据数组选择数据

问题描述

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

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"
      ]

现在我需要在上面的查询中编写一个查询 where comp, cus 。

$rslt = Stdetl::whereIn('comp, cus', $categories)
                           ->where(YEAR(docdate), '=', 2019)
                           ->get(SUM(number))->toArray();

但是这个查询不起作用。我收到如下错误:

(1/1) FatalErrorException
Call to undefined function App\Http\Controllers\YEAR()

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

标签: laravellaravel-5

解决方案


YEAR()是一个mysql函数,你应该用它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))

推荐阅读