我有一个appointments table
,其中我将约会开始日期和时间存储在datetime
字段中。我有一堆方法可用于获取从特定日期或两个给定日期开始的约会。例如:
日历类:
public function today()
{
$start = Carbon::now()->hour('00')->minute('00')->second('00');
$end = Carbon::now()->hour('23')->minute('59')->second('00');
return Appointment::getAppointments($this->start, $this->end);
}
// public function tomorrow();
// public function thisMonth();
约会模式:
public static function getAppointments($start, $end)
{
return static::whereBetween('date', array(
$start->format('Y-m-d H:i'),
$end->format('Y-m-d H:i')
))->get();
}
如您所见,我需要设置小时,分钟和秒,否则如果开始日期和结束日期相同,则不会返回任何结果。是否可以简单地执行以下操作并仍然从该日期获得结果?
public function today()
{
$start = Carbon::now();
$end = Carbon::now();
return Appointment::getAppointments($this->start, $this->end);
}
public static function getAppointments($start, $end)
{
return static::whereBetween('date', array(
$start->format('Y-m-d'),
$end->format('Y-m-d')
))->get();
}
答案 0 :(得分:1)
尝试以下代码
$state.go('[your state name]');
这会将DATETIME字段转换为DATE
答案 1 :(得分:1)
我认为问题是你的日期字段很可能有一个你需要截断的时间组件,如果要比较它是否在日期之间。
确保在控制器顶部导入db命名空间
use DB;
这应该将日期转换为Y-m-d,因此它会落在你的日期之间
public static function getAppointments($start, $end)
{
return static::whereBetween(DB::raw('CAST(date as DATE)', array(
$start->format('Y-m-d'),
$end->format('Y-m-d')
))->get();
}