首页 > 解决方案 > Laravel Eloquent 在查询中比较日期时遇到问题

问题描述

我对 Eloquent 有这个查询,由于某种原因,它似乎忽略了我最后的声明,即只返回等于或大于给定日期的日期。

$searchCriteriaArray数组是我搜索的关键词(这有效)

$searchDate is the我过滤的日期(这不起作用)

这是我的查询

$pool =User::select('id', 'email', 'updated_at', 'phone_number', 'headline','summary')
                    ->where(function ($query) use ($searchCriteriaArray){
                        for($i =0; $i < count($searchCriteriaArray); $i++){
                            $query->orwhere('headline', 'like', '%' . $searchCriteriaArray[$i] . '%' );
                        }
                    })->orWhere(function ($query) use ($searchCriteriaArray){
                        for($i =0; $i < count($searchCriteriaArray); $i++){
                            $query->orwhere('summary', 'like', '%' . $searchCriteriaArray[$i] . '%' );
                        }
                    })->where('updated_at', '>= ',$searchDate)
                    ->orderBy('updated_at', 'desc')
                    ->paginate(50);

我看过其他一些帖子,包括Laravel Eloquent compare date from datetime field。然而这并没有解决我的问题。为什么 Eloquent 忽略了我最后的 where 语句,我该如何解决这个问题?

标签: phplaraveleloquent

解决方案


有人发布了答案,然后将其删除。我需要添加这一行

 ->where(function ($query) use ($searchDate){
                        $query->orwhere('updated_at', '>=', $searchDate);
                    })

推荐阅读