laravel - 根据数组选择数据
问题描述
我有一个来自查询的数组,如下所示:
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()
但这不是该查询中的唯一错误。
解决方案
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))
推荐阅读
- angular - 使用 /assets 文件夹在 URI 中提供 Angular
- wso2 - 在调用期间附加到 endoint 的 url-mapping 或 uri-template 值
- python - 为什么我的 python 键盘记录器没有记录任何键?
- javascript - 使用内容缩放 Div 以适应视口
- http - 客户端超时的http请求会发生什么?
- bash - Bash/unix,如何将所有内容(文件/子目录)从一个文件夹复制到另一个文件夹并保持文件夹结构
- java - 通过匿名类使用线程时隐式转换为可运行接口?
- node.js - 我收到错误 GET http://localhost:3000/api/products 404(未找到)
- pandas - 如何根据优先级和条件对 pandas df 进行排名?
- python - 在列表中的列表中添加元素