我的查询如下:
$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和wherehas不是可以同时运行的吗?
更新
我有两个输入文本,即输入文本的数据和输入文本的搜索名称。当用户想要进行搜索时,他可以输入更新的日期和输入名称。然后单击搜索按钮。系统会过滤掉它。
发布于 2017-04-26 07:57:52
你用了orWhereHas。如果您想要这两个旅游条件(wheredate和both ),应该使用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而不是or (and与laravel隐式)。
https://stackoverflow.com/questions/43627948
复制相似问题