Php 检查日期是否介于Laravel 5中的日期范围之间
我有一张Php 检查日期是否介于Laravel 5中的日期范围之间,php,laravel,laravel-5,eloquent,Php,Laravel,Laravel 5,Eloquent,我有一张预订的表格,上面有开始和结束列作为日期戳 我知道这个 $start = "2015-07-12 01:00:00"; $end = "2015-07-12 02:00:00"; $users = DB::table('booked') ->whereBetween('start', [$start, $end])->get(); 检查start列中是否有任何日期在$start和$end范围内 我想要的其实是另一种方式 我在检查boo
预订的
表格,上面有开始
和结束
列作为日期戳
我知道这个
$start = "2015-07-12 01:00:00";
$end = "2015-07-12 02:00:00";
$users = DB::table('booked')
->whereBetween('start', [$start, $end])->get();
检查start
列中是否有任何日期在$start和$end范围内
我想要的其实是另一种方式
我在检查
book
表中start
和end
列中出现的$start和$end日期变量时遇到困难。以下查询将为您提供开始和结束都在$start和$end之间的所有记录:
$users = DB::table('booked')
->where('start', '>=', $start)
->where('start', '<=', $end)
->where('end', '>=', $start)
->where('end', '<=', $end);
$users=DB::table('booked')
->其中('start','>=',$start)
->其中('start','=',$start)
->其中('end','请在给定代码下尝试此操作将检查请求日期时间是否已预订,如果预订了任何时间段,则将返回1,否则返回0:
$start = $request->start_date;
$end = $request->end_date;
DB::table('booked')->where(function ($query) use ($start, $end) {
$query->where(function ($q) use ($start, $end) {
$q->where('start', '>=', $start)
->where('start', '<', $end);
})->orWhere(function ($q) use ($start, $end) {
$q->where('start', '<=', $start)
->where('end', '>', $end);
})->orWhere(function ($q) use ($start, $end) {
$q->where('end', '>', $start)
->where('end', '<=', $end);
})->orWhere(function ($q) use ($start, $end) {
$q->where('start', '>=', $start)
->where('end', '<=', $end);
});
})->count();
$start=$request->start\u日期;
$end=$request->end\u日期;
DB::table('booked')->其中(函数($query)使用($start,$end){
$query->where(函数($q)use($start,$end){
$q->where('start','>=',$start)
->其中('开始','',$结束);
})->orWhere(函数($q)使用($start,$end){
$q->where('end','>',$start)
->其中('end','=',$start)
->其中('end','我用这段代码解决了我的问题,在我的情况下,我有多个阻止日期,我们不能允许用户注册新的预订,因此我们必须检查以下12个地方:
$start_date = $request->start_date;
$end_date = $request->end_date;
DB::table('booked')->where(function ($query) use ($start_date, $end_date) {
$query->where(function ($q) use ($start_date, $end_date) {
$q->where('start_date', '>=', $start_date)
->where('start_date', '=<', $start_date);
})->orWhere(function ($q) use ($start_date, $end_date) {
$q->where('end_date', '>=', $start_date)
->where('end_date', '<=', $start_date);
})->orWhere(function ($q) use ($start_date, $end_date) {
$q->where('start_date', '>=', $end_date)
->where('start_date', '<=', $end_date);
})->orWhere(function ($q) use ($start_date, $end_date) {
$q->where('end_date', '>=', $end_date)
->where('end_date', '<=', $end_date);
})->orWhere(function ($q) use ($start_date, $end_date) {
$q->where('start_date', '<=', $start_date)
->where('end_date', '>=', $start_date);
})->orWhere(function ($q) use ($start_date, $end_date) {
$q->where('start_date', '<=', $end_date)
->where('end_date', '>=', $end_date);
});
})->count();
$start\u date=$request->start\u date;
$end\u date=$request->end\u date;
DB::table('booked')->其中(函数($query)使用($start\u date,$end\u date){
$query->where(函数($q)use($start\u date,$end\u date){
$q->where('start\u date','>=',$start\u date)
->其中('start_date','=',$start_date)
->其中('end_date','=',$end_date)
->其中('start_date','=',$end_date)
->其中('end_date','=',$start_date);
})->orWhere(函数($q)使用($start\u date,$end\u date){
$q->where('start\u date','=',$end\u date);
});
})->计数();
你说的“另一种方式”是什么意思?开始日期在给定开始/结束范围之外的记录?我的理解是,上面的查询检查开始列是否在$start和$end之间。我想知道的是$start和$end是否在列start
和end
之间。非常简单和出色的解决方案,而不是排序$start
和$end
日期,首先实际验证它们,以确保$start
包含的日期早于$end
?使用Laravel当前的验证规则,您可以用一种简单的方式进行验证。否则,在假设的形式中,您可能会看到:“查找从2020年1月28日到2020年1月20日的预订”,这将导致一个正确的查询,但这对meHi Jarek来说应该是一个验证错误,我喜欢这个解决方案。我只是有一个相关的问题。是否可以只获取不在开始和结束之间的行?提前谢谢!
$start = $request->start_date;
$end = $request->end_date;
DB::table('booked')->where(function ($query) use ($start, $end) {
$query->where(function ($q) use ($start, $end) {
$q->where('start', '>=', $start)
->where('start', '<', $end);
})->orWhere(function ($q) use ($start, $end) {
$q->where('start', '<=', $start)
->where('end', '>', $end);
})->orWhere(function ($q) use ($start, $end) {
$q->where('end', '>', $start)
->where('end', '<=', $end);
})->orWhere(function ($q) use ($start, $end) {
$q->where('start', '>=', $start)
->where('end', '<=', $end);
});
})->count();
$start_date = $request->start_date;
$end_date = $request->end_date;
DB::table('booked')->where(function ($query) use ($start_date, $end_date) {
$query->where(function ($q) use ($start_date, $end_date) {
$q->where('start_date', '>=', $start_date)
->where('start_date', '=<', $start_date);
})->orWhere(function ($q) use ($start_date, $end_date) {
$q->where('end_date', '>=', $start_date)
->where('end_date', '<=', $start_date);
})->orWhere(function ($q) use ($start_date, $end_date) {
$q->where('start_date', '>=', $end_date)
->where('start_date', '<=', $end_date);
})->orWhere(function ($q) use ($start_date, $end_date) {
$q->where('end_date', '>=', $end_date)
->where('end_date', '<=', $end_date);
})->orWhere(function ($q) use ($start_date, $end_date) {
$q->where('start_date', '<=', $start_date)
->where('end_date', '>=', $start_date);
})->orWhere(function ($q) use ($start_date, $end_date) {
$q->where('start_date', '<=', $end_date)
->where('end_date', '>=', $end_date);
});
})->count();