php - 如何使用 'where' 等 Eloquent 方法从对象/集合中获取特定日期

标签 php mysql sql laravel

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

我尝试了以下操作:

  1. $providerResults->results->where('created_at','2019-01-28 00:00:00') //这是可行的,但我只想使用“2019”或“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); //不工作

也许使用 filter()?

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

关于php - 如何使用 'where' 等 Eloquent 方法从对象/集合中获取特定日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54402740/

相关文章:

php - 在循环中的 php mysql 记录插入期间日期 22 个月递增

mysql - 按 DATETIME 值和时间范围加载行

sql - 好友关系查询

sql - 为表的所有列动态更新特殊字符列?

mysql - 错误: MySQL shutdown unexpectedly

jquery - 检索标签兄弟时进行标签搜索

PHP mcrypt 到 ColdFusion 解密

javascript - 使用 baguettebox 显示数据库中的图像

php - 在每个 PHP 回溯级别获取范围内的变量?

php - SELECT * FROM $_POST[] - PHP mySQL 格式化