php - 如何使用“where”等雄辩的方法从对象/集合中获取特定日期
问题描述
我想用chartjs在我的网站上实现一个图表。我正在尝试使用 laravel 并使用具有关系(产品、结果)的对象(提供者)创建了一个函数,并且我想过滤它。我只想得到实际月份/实际年份的结果。所以我尝试了很多东西,但我无法提供一个简单、干净的代码解决方案。
我尝试了以下事情:
- $providerResults->results->where('created_at','2019-01-28 00:00:00') // 这是有效的,但我只想用 '2019' 或 '1' 过滤 1 月
- $providerResults->results->where('created_at', 'LIKE','%2019%') // 不工作
- $providerResults->results->where('created_at', 'LIKE','%2019%')->get() // 不工作
- $providerResults->results->whereIn('created_at', 2019); // 不工作
也许使用过滤器()?
private function getResultsForChart($objProvider) {
$providerResults = $objProvider
->where('id', AUTH::user()->provider_id)
->with('products')
->with('results')
#->whereYear('created_at', 2019)
#->whereMonth('created_at', 1)
->first()
;
$providerResultsForChart = $providerResults->results->whereIn('created_at', 2019);
dd($providerResultsForChart);
return $providerResultsForChart;
}
我的预期结果将是我的收藏只有实际月份/实际年份,而不是所有内容。
我希望有人可以帮助我提示或指导我可以用来解决我的问题。
非常感谢您!
解决方案
尝试使用具有以下条件的急切加载:
$providerResults = $objProvider
->where('id', AUTH::user()->provider_id)
->with('products')
->with(['results' => function ($query) {
$query->whereYear('created_at', 2019)
->whereMonth('created_at', 1);
}])
->first();
推荐阅读
- javascript - 在 JSON 响应中将字符串 true/false 转换为布尔值
- python - Python Search and Replace new lines
- python - pyserial 使用 serial.tools.list_ports.grep() 找不到设备
- html - Do normal elements contain custom elements?
- java - How to take 2D array inputs from command Line arguments in java?
- java - Java: How to read the last chars of a file
- asp.net - 发布我的 ASP.net 网站时出错
- javascript - 将插件加载到 Web 应用程序的安全/安全方式
- reactjs - Dynamic State variable in React.js
- msbuild - msbuild配置文件(*.proj)中如何使用绝对路径?