首页 > 解决方案 > 如何使用“where”等雄辩的方法从对象/集合中获取特定日期

问题描述

我想用chartjs在我的网站上实现一个图表。我正在尝试使用 laravel 并使用具有关系(产品、结果)的对象(提供者)创建了一个函数,并且我想过滤它。我只想得到实际月份/实际年份的结果。所以我尝试了很多东西,但我无法提供一个简单、干净的代码解决方案。

我尝试了以下事情:

  1. $providerResults->results->where('created_at','2019-01-28 00:00:00') // 这是有效的,但我只想用 '2019' 或 '1' 过滤 1 月
  2. $providerResults->results->where('created_at', 'LIKE','%2019%') // 不工作
  3. $providerResults->results->where('created_at', 'LIKE','%2019%')->get() // 不工作
  4. $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;

}

我的预期结果将是我的收藏只有实际月份/实际年份,而不是所有内容。

我希望有人可以帮助我提示或指导我可以用来解决我的问题。

非常感谢您!

标签: phpmysqlsqllaravel

解决方案


尝试使用具有以下条件的急切加载:

$providerResults = $objProvider
        ->where('id', AUTH::user()->provider_id)
        ->with('products')
        ->with(['results' => function ($query) {
            $query->whereYear('created_at', 2019)
                  ->whereMonth('created_at', 1);
        }])
        ->first();

推荐阅读