User.php 1.4KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. <?php
  2. namespace App\Models;
  3. use Illuminate\Database\Eloquent\Casts\Attribute;
  4. use Illuminate\Database\Eloquent\Factories\HasFactory;
  5. use Illuminate\Foundation\Auth\User as Authenticatable;
  6. use Illuminate\Notifications\Notifiable;
  7. use Laravel\Sanctum\HasApiTokens;
  8. class User extends Authenticatable
  9. {
  10. use HasApiTokens, HasFactory, Notifiable;
  11. /**
  12. * The attributes that are mass assignable.
  13. *
  14. * @var array<int, string>
  15. */
  16. protected $fillable = ["name", "username", "status", "password", "role_id"];
  17. /**
  18. * The attributes that should be hidden for serialization.
  19. *
  20. * @var array<int, string>
  21. */
  22. protected $hidden = [
  23. "created_at",
  24. "updated_at",
  25. "password",
  26. "remember_token",
  27. ];
  28. protected function status(): Attribute
  29. {
  30. return Attribute::make(
  31. get: fn($value) => $value
  32. ? __("words.active")
  33. : __("words.not_active")
  34. );
  35. }
  36. public function role()
  37. {
  38. return $this->belongsTo(Role::class);
  39. }
  40. public function scopeFilter($query, array $filters)
  41. {
  42. $query->when($filters["search"] ?? null, function ($query, $search) {
  43. $query->where(function ($query) use ($search) {
  44. $query
  45. ->where("name", "like", "%" . $search . "%")
  46. ->orWhere("username", "like", "%" . $search . "%");
  47. });
  48. });
  49. }
  50. }