我怎样才能同时使用wheredate?

时间:2017-04-26 07:43:47

标签: php laravel laravel-5.3 laravel-eloquent

我的查询是这样的:

$search = $request->get('search');
$search_date = $request->get('search_date');
$store = Store::whereDate('updated_at', $search_date)->orWhereHas('user'), function($query) use ($search) {
    $query->where(function ($q) use($search)
    {
        $q->where('name', 'LIKE', '%',$search.'%');
    });
})->paginate(10);

执行时,没有错误。但结果与过滤日期不匹配

当我只使用没有位置的wheredate时,它与过滤器匹配

wheredatewherehas不能同时运行?

更新

我有2个输入文本,即datepicker的输入文本和搜索名称的输入文本。当用户想要搜索时,他可以输入更新的日期和输入名称。然后单击搜索按钮。系统会过滤掉它。

1 个答案:

答案 0 :(得分:0)

您使用了orWhereHas。如果您想要两个游览标准(wheredate和wherehas),您应该使用wherehas而不是orWhereHas

$store = Store::whereDate('updated_at', $search_date)->whereHas('user'), function($query) use ($search) {
    $query->where(function ($q) use($search) {
        $q->where('name', 'LIKE', '%',$search.'%');
    });
})->paginate(10);

换句话说,如果您需要两个条件都为真,请使用and,而不是orand隐含在laravel查询构建器中)