FormData.php 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <?php
  2. namespace App\Models;
  3. use Illuminate\Database\Eloquent\Model;
  4. use Illuminate\Database\Eloquent\Factories\HasFactory;
  5. use Illuminate\Database\Eloquent\SoftDeletes;
  6. use Illuminate\Database\Eloquent\Relations\BelongsTo;
  7. use Illuminate\Database\Eloquent\Relations\MorphMany;
  8. use Illuminate\Database\Eloquent\Builder;
  9. class FormData extends Model
  10. {
  11. use HasFactory, SoftDeletes;
  12. protected $fillable = [
  13. 'uuid',
  14. 'name',
  15. 'email',
  16. 'phone',
  17. 'gender',
  18. 'message',
  19. 'submitted_at',
  20. 'category_id'
  21. ];
  22. protected $casts = [
  23. 'gender' => 'boolean',
  24. 'submitted_at' => 'datetime',
  25. 'is_banned' => 'boolean',
  26. ];
  27. protected static function booted()
  28. {
  29. static::creating(function ($model) {
  30. if (empty($model->uuid)) {
  31. $model->uuid = \Illuminate\Support\Str::uuid()->toString();
  32. }
  33. if (empty($model->submitted_at)) {
  34. $model->submitted_at = now();
  35. }
  36. });
  37. }
  38. public function comments(): MorphMany
  39. {
  40. return $this->morphMany(Comments::class, 'commentable');
  41. }
  42. public function category(): BelongsTo
  43. {
  44. return $this->belongsTo(Category::class);
  45. }
  46. public function scopeMale(Builder $query): Builder
  47. {
  48. return $query->where('gender', true);
  49. }
  50. public function scopeFemale(Builder $query)
  51. {
  52. return $query->where('gender', false);
  53. }
  54. public function scopeToday(Builder $query): Builder
  55. {
  56. return $query->whereDate('submitted_at', today());
  57. }
  58. }