use*_*500 3 php laravel php-carbon laravel-5
我有一个表示事件的表,每个表都有一个通知期,例如,如果当前距事件不到24小时,则您不能预订该事件。
我正在尝试为此创建一个“可预订”范围,但失败了。具体而言,在下面,“时间”代表事件的时间(时间戳),“通知”通知期限,以分钟(整数)为单位,这两个都是事件模型中的列。我发现,Laravel没有读取'notice'变量,即将其视为0。感谢您提供任何指导。
public function scopeBookable($q) {
$q->where('time','>',Carbon::now()->addMinutes('notice'))->orderBy('time','ASC')->get();
}
Run Code Online (Sandbox Code Playgroud)
该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();
}
Run Code Online (Sandbox Code Playgroud)
收集选项
您始终可以在SQL中执行自联接并notice在子查询中检查的值。另一种选择是返回过滤的口才集合。
public function scopeBookable() {
return Events::all()->filter(function($event) {
return $event->time > Carbon::now()->addMinutes($event->notice)
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8588 次 |
| 最近记录: |