雄辩在Laravel

时间:2018-01-15 21:06:29

标签: laravel laravel-5

我遇到了Eloquent查询的问题。 我的模型的结构是:

优惠券(可获得预订折扣):

  • period_start(优惠券在某些特定时段有效)
  • period_end(此结束日期,例如:当您在2018-02-01和2018-03-03之间预订时优惠券有效)
  • booking_start(预订完成的时间段)
  • booking_end(您可以预订例如2018-01-15至2018-01-30,但优惠券才有效)

代码:

$coupon = Coupon::where('period_start', '<=', $request->get('from_date'))
        ->where('period_end', '<=', $request->get('to_date'))
        ->where('booking_start', '<=', now()->format('Y-m-d'))
        ->where('booking_end', '>=', now()->format('Y-m-d'))
        ->first();

在订单字段中,人们从日期选择器中选择两个日期,即request()所针对的日期。

这应该有效,但我没有得到任何结果......

2 个答案:

答案 0 :(得分:-1)

如何使用dateBetween?

$start = Carbon::parse($request->start)->startOfDay();  //2016-09-29 00:00:00.000000
$end = Carbon::parse($request->end)->endOfDay(); //2016-09-29 23:59:59.000000
$clicks->dateBetween($start, $end);

https://laracasts.com/discuss/channels/eloquent/daterange-with-wherebetween

答案 1 :(得分:-1)

您应该重新格式化查询部分之前从datepicker获取的日期,如下所示。

$date=date('Y-m-d', strtotime(str_replace('-', '/', $request->to_date)));