Php Laravel雄辩-X天前在何处创建了_

Php Laravel雄辩-X天前在何处创建了_,php,sql,laravel,laravel-5,eloquent,Php,Sql,Laravel,Laravel 5,Eloquent,我有一系列的日子要检查以Laravel Spark结束的审判: $trialIntervals = [10, 5, 3, 1, 0]; 我召集所有团队,然后使用Diffinday检查他们的试验是否在某个时间间隔结束: $daysTillTrialEnds = Carbon::parse($team->trial_ends_at)->diffInDays(Carbon::now()); 然后,我检查此值是否已经是数据库中的现有结果,以及在以下时间间隔中: if ( in_array

我有一系列的日子要检查以Laravel Spark结束的审判:

$trialIntervals = [10, 5, 3, 1, 0];
我召集所有团队,然后使用Diffinday检查他们的试验是否在某个时间间隔结束:

$daysTillTrialEnds = Carbon::parse($team->trial_ends_at)->diffInDays(Carbon::now());
然后,我检查此值是否已经是数据库中的现有结果,以及在以下时间间隔中:

if ( in_array($daysTillTrialEnds, $trialIntervals) && !TrialEndingNotification::where('team_id', $team->id)->where('days_notified_at', $daysTillTrialEnds)->count() ) {

   // not yet been added to db

}
我有一个名为“days\u notified\u at”的字段,如果我已经添加了行并通知了客户,那么我正在使用该检查。但是,该字段不再使用,我宁愿引用在日期创建的_并删除该字段

我的问题是我如何做到这一点:

->where(Carbon::parse('created_at')->diffInDays(Carbon::now()), $daysTillTrialEnds)
在不出现此错误的情况下:

DateTime::__construct(): Failed to parse time string (created_at) at position 0 (c): The timezone could not be found in the database

其目的是where将仅显示创建日期为X天前的行。

您是否尝试过类似的方法:

$dayAgo = 6 // where here there is your calculation for now How many days
$dayToCheck = Carbon::now()->subDays($dayAgo);
$model->whereDate("created_at", =, $dayToCheck);
使用WhereRaw

->whereRaw('DATEDIFF(CURDATE(),STR_TO_DATE(created_at, '%Y-%m-%d'))'), $daysTillTrialEnds)
应该是

->where(Carbon::parse($item->created_at)->diffInDays(Carbon::now()), $daysTillTrialEnds)

Laravel会自动将“created_at”转换为碳对象,因此您无需解析它

`$items->where('created_at')->diffInDays(Carbon::now(), $daysTillTrialEnds)'

应该适合您

您可以在模型中创建作用域,如下所示:

public function scopeActive($query)
{
    return $query->whereDate('created_at' , '=', Carbon::today()->subDays( 2 ));

}
在控制器中的调用作用域之后:

    $post = Post::active()->get();

可能是因为在where函数“->where()”中,第一个参数是字段名,所以Carbon::parse as first arguments in where has not senseravel有一个
whereDate()
函数,在这种情况下可能会帮你很多忙。这将在一天中每1秒工作一次,因为
created\u at
是时间戳。
    $post = Post::active()->get();