<?php namespace App\Models; use Carbon\Carbon; use Illuminate\Database\Eloquent\Builder; /** * E-mail confirmation * * @property int $id * @property \Carbon\Carbon $created_at * @property int $user_id * @property string $token * @property string $email * @property-read User $user * @method $this|Builder valid() */ class EmailConfirmation extends BaseModel { protected $guarded = []; const UPDATED_AT = null; // disable update timestamp const EXPIRATION_H = 2; // 2h /** Authoring user */ public function user() { return $this->belongsTo(User::class, 'user_id'); } public function scopeValid(Builder $query) { return $query->where('created_at', '>=', Carbon::now()->subHours(self::EXPIRATION_H)); } public function scopeExpired(Builder $query) { return $query->where('created_at', '<', Carbon::now()->subHours(self::EXPIRATION_H)); } }