从 Laravel 中的日期列查询两个日期之间的数据
Posted
技术标签:
【中文标题】从 Laravel 中的日期列查询两个日期之间的数据【英文标题】:Query Data Between Two Date from Date column in Laravel 【发布时间】:2020-01-01 17:33:49 【问题描述】:我正在尝试从我的日期列中查询两个日期之间的数据。 我用api测试过
http://127.0.0.1:8000/api/expense?start=2019-08-01&2019-08-04
但它给了我所有不是日期范围的记录?
My Controller
我认为我的控制器有问题,但我仍然无法弄清楚..
提前致谢...
【问题讨论】:
试试这个:127.0.0.1:8000/api/expense?start=2019-08-01&end=2019-08-04 收到此错误"explode() expects parameter 2 to be string, object given"
你在哪里使用了 explode() 函数?
就像你在我的控制器中看到的那样,我没有使用它..
@SandeepSudhakaran 没关系,兄弟现在我解决了。
【参考方案1】:
希望这个答案对你有帮助
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()
并将您的网址更改为
127.0.0.1:8000/api/expense?start=2019-08-01&end=2019-08-04
【讨论】:
突然又报错Call to undefined method Illuminate\Database\Eloquent\Builder::mapInto()
对答案进行了一些编辑。在if
子句中。请也试试这个
好的。对答案又做了一个改动。 return ExpenseResource::collection($expenses->get());
谢谢哥们。快乐编码【参考方案2】:
试试这样的
$users = User::select("users.*")
->whereBetween('created', ['2018-02-01', '2018-02-10'])
->get();
【讨论】:
以上是关于从 Laravel 中的日期列查询两个日期之间的数据的主要内容,如果未能解决你的问题,请参考以下文章