Review.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. <?php
  2. namespace App\Models;
  3. use Illuminate\Database\Eloquent\Factories\HasFactory;
  4. use Illuminate\Database\Eloquent\Model;
  5. use Illuminate\Database\Eloquent\Relations\BelongsTo;
  6. use Illuminate\Database\Eloquent\Relations\BelongsToMany;
  7. use Illuminate\Database\Eloquent\Relations\HasMany;
  8. use Illuminate\Database\Eloquent\SoftDeletes;
  9. /**
  10. * @property int $id
  11. * @property int $schedule_id
  12. * @property string $origin
  13. * @property int $origin_id
  14. * @property numeric $stars
  15. * @property string|null $comment
  16. * @property \Illuminate\Support\Carbon|null $created_at
  17. * @property \Illuminate\Support\Carbon|null $updated_at
  18. * @property \Illuminate\Support\Carbon|null $deleted_at
  19. * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ImprovementType> $improvements
  20. * @property-read int|null $improvements_count
  21. * @property-read \App\Models\Client|null $originClient
  22. * @property-read \App\Models\Provider|null $originProvider
  23. * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ReviewMedia> $reviewMedia
  24. * @property-read int|null $review_media_count
  25. * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\ReviewImprovement> $reviewsImprovements
  26. * @property-read int|null $reviews_improvements_count
  27. * @property-read \App\Models\Schedule $schedule
  28. * @method static \Illuminate\Database\Eloquent\Builder<static>|Review newModelQuery()
  29. * @method static \Illuminate\Database\Eloquent\Builder<static>|Review newQuery()
  30. * @method static \Illuminate\Database\Eloquent\Builder<static>|Review onlyTrashed()
  31. * @method static \Illuminate\Database\Eloquent\Builder<static>|Review query()
  32. * @method static \Illuminate\Database\Eloquent\Builder<static>|Review whereComment($value)
  33. * @method static \Illuminate\Database\Eloquent\Builder<static>|Review whereCreatedAt($value)
  34. * @method static \Illuminate\Database\Eloquent\Builder<static>|Review whereDeletedAt($value)
  35. * @method static \Illuminate\Database\Eloquent\Builder<static>|Review whereId($value)
  36. * @method static \Illuminate\Database\Eloquent\Builder<static>|Review whereOrigin($value)
  37. * @method static \Illuminate\Database\Eloquent\Builder<static>|Review whereOriginId($value)
  38. * @method static \Illuminate\Database\Eloquent\Builder<static>|Review whereScheduleId($value)
  39. * @method static \Illuminate\Database\Eloquent\Builder<static>|Review whereStars($value)
  40. * @method static \Illuminate\Database\Eloquent\Builder<static>|Review whereUpdatedAt($value)
  41. * @method static \Illuminate\Database\Eloquent\Builder<static>|Review withTrashed(bool $withTrashed = true)
  42. * @method static \Illuminate\Database\Eloquent\Builder<static>|Review withoutTrashed()
  43. * @mixin \Eloquent
  44. */
  45. class Review extends Model
  46. {
  47. use HasFactory, SoftDeletes;
  48. protected $fillable = [
  49. 'schedule_id',
  50. 'origin',
  51. 'origin_id',
  52. 'stars',
  53. 'comment',
  54. ];
  55. protected $casts = [
  56. 'stars' => 'decimal:1',
  57. 'created_at' => 'datetime',
  58. 'updated_at' => 'datetime',
  59. 'deleted_at' => 'datetime',
  60. ];
  61. public function schedule(): BelongsTo
  62. {
  63. return $this->belongsTo(Schedule::class);
  64. }
  65. public function originProvider(): BelongsTo
  66. {
  67. return $this->belongsTo(Provider::class, 'origin_id');
  68. }
  69. public function originClient(): BelongsTo
  70. {
  71. return $this->belongsTo(Client::class, 'origin_id');
  72. }
  73. public function reviewsImprovements(): HasMany
  74. {
  75. return $this->hasMany(ReviewImprovement::class);
  76. }
  77. public function reviewMedia(): HasMany
  78. {
  79. return $this->hasMany(ReviewMedia::class);
  80. }
  81. public function improvements(): BelongsToMany
  82. {
  83. return $this->belongsToMany(
  84. ImprovementType::class,
  85. 'reviews_improvements',
  86. 'review_id',
  87. 'improvement_type_id'
  88. )->withTimestamps();
  89. }
  90. }