$likesRelation * @property-read Collection $views * * @method static \Illuminate\Database\Eloquent\Builder|CameraWeb where($column, $operator = null, $value = null) * @method static \Illuminate\Database\Eloquent\Builder|CameraWeb latest($column = 'created_at') * @method static \Illuminate\Database\Eloquent\Builder|CameraWeb count($columns = '*') * @method static \Illuminate\Database\Eloquent\Builder|CameraWeb take(int $value) * @method static \Illuminate\Database\Eloquent\Builder|CameraWeb with($relations) */ class CameraWeb extends Model { use BelongsToUser; #[\Override] protected $table = 'camera_web'; #[\Override] protected $guarded = ['id', 'created_at', 'updated_at', 'user_id', 'image', 'caption']; #[\Override] public $timestamps = false; /** @var array */ #[\Override] protected $casts = [ 'timestamp' => 'datetime', ]; public function scopePeriod(Builder $query, $period): void { if ($period == 'today') { $query->where('timestamp', '>=', Carbon::today()->timestamp); } if ($period == 'last_week') { $query->whereBetween('timestamp', [now()->subWeek()->timestamp, now()->timestamp]); } if ($period == 'last_month') { $query->whereBetween('timestamp', [now()->subMonth()->timestamp, now()->timestamp]); } } public function room(): BelongsTo { return $this->belongsTo(Room::class); } public function likes(): HasMany { return $this->hasMany(CameraLike::class); } public function views(): HasMany { return $this->hasMany(CameraView::class); } public function formattedDate(): Attribute { return new Attribute( get: fn () => Carbon::parse($this->timestamp)->format('Y-m-d H:i'), ); } }