我正在尝试从日期列的两个日期之间查询数据。 我使用api测试过
http://127.0.0.1:8000/api/expense?start=2019-08-01&2019-08-04
但是它给了我所有不是日期范围内的记录吗?
My Controller
public function index(Request $request) { $user = auth()->user(); $expenses = Expense::whereHas('user', function($subQuery) use($user){ return $subQuery->where('shop_id', '=', $user->shop_id); })->with(['user'])->get(); if($request->start && $request->end) { $expenses->where(function($q) use ($request) { $q->whereBetween('date', array($request->start, $request->end)); }); } return ExpenseResource::collection($expenses); }
我认为我的控制器做错了,但是我仍然无法解决。.
预先感谢...
答案 0 :(得分:0)
希望这个答案有帮助
public function index(Request $request)
{
$user = auth()->user();
$expenses = Expense::whereHas('user', function($subQuery) use($user){
return $subQuery->where('shop_id', '=', $user->shop_id);
})->with(['user']);
if($request->start && $request->end) {
$expenses->whereBetween('date', array($request->start, $request->end));
}
return ExpenseResource::collection($expenses->get());
}
您所做的就是先get()
个结果,然后应用whereBetween()
。
相反,我首先应用了whereBetween()
,然后如果您的if
条件满足了get()
,然后将您的URL更改为
127.0.0.1:8000/api/expense?start=2019-08-01&end=2019-08-04
答案 1 :(得分:0)
尝试类似
$users = User::select("users.*")
->whereBetween('created', ['2018-02-01', '2018-02-10'])
->get();