我有一个booked
表,其中start
和end
列为日期戳;
我知道这个
$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的日期。
我想要的实际上是另一种方式。
我很难检查start
表格中end
和book
列中的$ start和$ end日期变量是否出现。
答案 0 :(得分:4)
// make sure $from is before $till, because they are probably provided as input
$from = min($start, $end);
$till = max($start, $end);
// then simply
DB::table('booked')
->where('start', '<=', $from)
->where('end', '>=', $till)
->get();
它将返回与$from-$till
期间包含的start-end
期间匹配的行:
start end
|------------------------|
|----------------|
$from $till
答案 1 :(得分:2)
请尝试使用给定的代码,这将检查请求的日期时间是否已预订,如果预订了任何时间段,则它将返回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();
答案 2 :(得分:0)
我使用此代码解决了我的问题,在我的情况下,我有多个阻止日期,在这个日期中我们不允许用户注册新的预订,因此我们必须检查以下12个地方:
addEvents = function () {
let events = this.myEvents;
let checkedEvents = [];
let that = this;
var content = this.$('#eventsBox');
content.find('event-container').remove();
this.$('#check-list input:checked').each(function() {
checkedEvents.push(that.$(this).data('index'));
let index = that.$(this).data('index');
content.find('#events-content').append(`
<div class="event-container">
<div class="row">
<div class="col-12">
<table class="table" id="eventT">
<thead>
<tr>
<th scope="col">ID</th>
<tr>
</thead>
<tbody>
<tr>
<td>
${events[index].id}
// How can i acces the sessions[index] to print all of them
${events[index].sessions[index].id}
</td>
...
答案 3 :(得分:-1)
以下查询将为您提供开头和结尾均在$ start和$ end 之间的所有记录:
$users = DB::table('booked')
->where('start', '>=', $start)
->where('start', '<=', $end)
->where('end', '>=', $start)
->where('end', '<=', $end);