php - Laravel 哪里 Carbon addMinutes 不起作用

标签 php laravel laravel-5 php-carbon

我有一个表示事件的表,每个事件都有一个通知期,例如如果当前距离事件开始时间不到 24 小时,您将无法预订该事件。

我正在尝试为此创建一个“可预订”范围,但失败了。具体来说,在下面,'time'代表事件发生的时间(时间戳),'notice'代表通知时间,以分钟为单位(整数),两者都是Events模型中的列。我发现 Laravel 没有读取“通知”变量,即将其视为 0。任何指导将不胜感激,谢谢。

public function scopeBookable($q) {
    $q->where('time','>',Carbon::now()->addMinutes('notice'))->orderBy('time','ASC')->get();
}

最佳答案

addMinutes() 方法需要一个整数而不是字符串。

范围选项

您可以将通知时间传递给作用域。

// Controller
$notice = 60;
Events::bookable($notice);

// Model
public function scopeBookable($q, $notice=0) {
    $q->where('time','>',Carbon::now()->addMinutes($notice))->orderBy('time','ASC')-get();
}

收藏选项

您始终可以在 SQL 中执行自连接并在子查询中检查 notice 的值。另一种选择是返回经过过滤的 Eloquent 集合。

public function scopeBookable() {
    return Events::all()->filter(function($event) {
        return $event->time > Carbon::now()->addMinutes($event->notice)
    });
}

关于php - Laravel 哪里 Carbon addMinutes 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44227007/

相关文章:

php - Laravel 在类构造函数中检索参数

mysql - 多对多关系中的 Eloquent (Laravel)查询

Laravel 中间件返回(试图获取非对象的属性 'headers')错误

php - json_encode 仅适用于带有自定义 toArray 的模型的 JSON_PARTIAL_OUTPUT_ON_ERROR

mysql - 如何在 Laravel 中加入 2 个表?

php - 在函数和 html 表中加载数据库值

php - Symfony2,上传新图像或选择现有图像(后台)

php - 将 $_SESSION ['somthing' ] 分配给变量时未定义索引

php - 如何从查询中获取面包屑数组(在 Laravel 中)?

php - 如果另一个字段为假,如何验证一个字段必须为真