Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 检查日期是否介于Laravel 5中的日期范围之间_Php_Laravel_Laravel 5_Eloquent - Fatal编程技术网

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();