在Laravel 5中使用碳约会

时间:2015-04-16 07:43:19

标签: php laravel laravel-5 php-carbon

我想从我的数据库中获取在不同时间开始的任务。即从今天,明天,下周和下个月开始。我试图在我的模型中编写范围来处理,但我真的不知道该怎么做。

这是我的范围方法

/**
 * @param $query
 * @return mixed
 */
public function scopeToday($query)
{
    return $query->where('start_at','=', Carbon::now());
}

/**
 * @param $query
 * @return mixed
 */
public function scopeTomorrow($query)
{
    return $query->where('start_at','=', Carbon::now()->addDay(1));
}

/**
 * @param $query
 * @return mixed
 */
public function scopeNextWeek($query)
{
    return $query->whereRaw('start_at = ?', [Carbon::now()->addWeek()]);
}

/**
 * @param $query
 * @return mixed
 */
public function scopeNextMonth($query)
{
    return $query->where('start_at','=', Carbon::now()->addMonth(1));
}

任何人都知道为什么以上不起作用?

注意:start_at已经是Carbon实例。

1 个答案:

答案 0 :(得分:1)

我猜您start_at字段为datetime type。这可能会导致比较日期的问题。

您只需将datetime转换为date并使用Carbon::today()代替Carbon::now()

public function scopeToday($query)
{
    return $query->where( DB::raw('DATE(created_at)') ,'=', Carbon::today());
}

这显示了Carbon::today()Carbon::now()

之间的差异
$now = Carbon::now();
echo $now;                               // 2015-03-26 00:36:47
$today = Carbon::today();
echo $today;                             // 2015-03-26 00:00:00

来源:http://carbon.nesbot.com/docs/#api-instantiation