Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
forbidals
/
admin_panel
/
app
/
Models
:
FcmToken.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php declare(strict_types=1); namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Builder; final class FcmToken extends Model { use HasFactory; /** * The attributes that are mass assignable. * * @var array<int, string> */ protected $fillable = [ 'user_id', 'fcm_token', 'device_type', 'device_id', 'last_used_at', ]; /** * The attributes that should be cast. * * @var array<string, string> */ protected $casts = [ 'last_used_at' => 'datetime', 'created_at' => 'datetime', 'updated_at' => 'datetime', ]; /** * Get the user that owns the FCM token. * * @return BelongsTo */ public function user(): BelongsTo { return $this->belongsTo(User::class); } /** * Scope a query to only include active tokens. (No soft deletes) * * @param Builder $query * @return Builder */ public function scopeByDeviceType(Builder $query, string $deviceType): Builder { return $query->where('device_type', $deviceType); } /** * Scope a query to filter by user. * * @param Builder $query * @param int $userId * @return Builder */ public function scopeForUser(Builder $query, int $userId): Builder { return $query->where('user_id', $userId); } /** * Scope a query to get tokens for multiple users. * * @param Builder $query * @param array<int> $userIds * @return Builder */ public function scopeForUsers(Builder $query, array $userIds): Builder { return $query->whereIn('user_id', $userIds); } /** * Update the last_used_at timestamp. * * @return bool */ public function touchLastUsed(): bool { return $this->update(['last_used_at' => now()]); } }