通过无效的日期过滤记录 laravel

Filter record through dates not working laravel

我的 table

中有一个 expiry_date(类型=日期)列
$currentDate = date('Y-m-d');
$Data = Post::whereDate('expiry_date','<=',$currentDate)->where(['status' => 'active'])->orWhere(['p_id' => 3])->select('id','title','status','p_id','expiry_date')->orderBy('id', 'DESC')->get();

如果当前日期大于到期日期,我想过滤数据,那么不应显示这些记录,但在我的情况下,我仍在获取记录。

任何解决方案谢谢。

您必须在闭包中分组 orWhere 子句。闭包中的分组就像真实查询中的 ()

$Data = Post::whereDate('expiry_date','<=',$currentDate)
    ->where(function($query){
        return $query
            ->where(['status' => 'active'])
            ->orWhere(['p_id' => 3]);
    })
    ->select('id','title','status','p_id','expiry_date')
    ->orderBy('id', 'DESC')
    ->get();

但是,因为我不了解你的项目 - 我可能无法分组。