我尝试按范围日期检查和设置状态
foreach($reserves as $reserve){
$table = App\TableDiagram::where('t_number',$reserve->st_number)
->first();
if (App\BusyTable::where('table_diagram_id',$table->id)
->where('end','>=',Carbon::now())
->first()) {
$reserve->status = 'active';
}
if (App\DepTable::where('table_diagram_id',$table->id)
->where('end','>=',Carbon::now())
->first()) {
$reserve->status = 'deposited';
}
}
许多人出于某种原因积极参与,但没有通过这个条件
怎么了?
更新
添加屏幕我在做什么
屏幕上的日期格式刚刚替换为\Carbon\Carbon::parse($reserve->reserve_date)->format('d-m-Y H:i:s')
答案 0 :(得分:0)
我认为您只需格式化日期。
试试这个
$formattedDate = date('m-d-Y H:i:s',time());
if (App\BusyTable::where('table_diagram_id',$table->id)
->where('end','>=',$formattedDate)
->first()) {
$reserve->status = 'active';
}
if (App\DepTable::where('table_diagram_id',$table->id)
->where('end','>=',$formattedDate)
->first()) {
$reserve->status = 'deposited';
}
答案 1 :(得分:0)
您必须使用->whereDate('end', '>=', Carbon::now());
或->where(\DB::raw("DATE(end) >= '".Carbon::now()."'"));
<强>更新强>
我会喜欢这个
$table = App\BusyTable::where('table_diagram_id',$table->id)->first();
if (Carbon::now()->lt(Carbon::createFromFormat('Y-m-d H:i:s', $table->end)) {
$reserve->status = 'active';
}
答案 2 :(得分:0)
尝试这一点必须有效:
if (App\BusyTable::where( function ($query) use ($table) {
$query->where('table_diagram_id',$table->id)
->where('end','>=',Carbon::now()->format('Y-m-d H:i:s'))
})->first()) {
$reserve->status = 'active';
}
if (App\DepTable::where( function ($query) use ($table) {
$query->where('table_diagram_id',$table->id)
->where('end','>=',Carbon::now()->format('Y-m-d H:i:s'))
})->first()) {
$reserve->status = 'deposited';
}
希望它对你有所帮助:)。