Laravel模型范围activated_at和deactivated_at检查是否有7天的差异

Ary*_*mon 7 php scope model laravel eloquent

使用模型范围:

public function scopeApproved($query)
{
    return $query->where('activated_at', '>=', 'deactivated_at' -7 days);
}
Run Code Online (Sandbox Code Playgroud)

我知道这是无效的语法,但我认为可能很清楚我想要实现的目标.

'activated_at'和'deactivated_at'是同一个表中的两个字段我希望得到它们相隔超过7天的所有实例

she*_*non 2

我不确定是否有正确的方法可以通过 Eloquent 实现此目的,尽管您可以使用 MySQL 函数DATEDIFF。尝试类似的方法:

// in your model
public function scopeApproved($query) {
    $query->whereRaw("DATEDIFF('activated_at','deactivated_at') >= 7");
}
Run Code Online (Sandbox Code Playgroud)

这取决于您正在使用的数据库驱动程序(即 MySQL、SQLite、SQL Server...)

编辑:

发现其他可以与 MySQL 一起使用的东西(到目前为止):

// in your model
public function scopeApproved($query) {
    $query->whereRaw("TO_DAYS(activated_at) - TO_DAYS(deactivated_at) >= 7");
}
Run Code Online (Sandbox Code Playgroud)

TO_DAYS是 MySQL 中的内置函数。