【发布时间】:2021-08-20 22:37:19
【问题描述】:
也许这个问题看起来很愚蠢,但我需要了解如何解决它。 在 Laravel 中,我尝试根据用户的选择应用许多条件,如下所示:
$query = Model::query();
if ($request->has('ids')) {
$query = $query->whereIn('id', $request->get('ids'));
}
if ( ($request->has('fruits')) ) {
$query = $query->whereHas('fruits', function ($sQuery) use ($list) {
$sQuery->whereIn('fruit.id', $list);
});
}
if ($request->has('date')) {
$query = $query->whereDate('created_at', '>=', $request->get('date'))
->orWhereDate('updated_at', '>=', $request->get('date'));
}
事实是关于日期的条件打破了以前的过滤条件。我得到了其他不符合第一个条件的原始数据。我想这是因为 orWhereDate 被用作所有其他条件的“或”条件。如何处理?
【问题讨论】:
-
有一点需要提一下,不需要像
$query = $query->where(...)那样重新声明$query变量。你可以修改它$query->where(...)。
标签: laravel laravel-5 eloquent laravel-query-builder