Cart.php 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. <?php
  2. namespace App\Models;
  3. use App\Enums\CartStatusEnum;
  4. use Illuminate\Database\Eloquent\Factories\HasFactory;
  5. use Illuminate\Database\Eloquent\Model;
  6. use Illuminate\Database\Eloquent\SoftDeletes;
  7. /**
  8. * @property int $id
  9. * @property int $client_id
  10. * @property CartStatusEnum $status
  11. * @property \Illuminate\Support\Carbon|null $created_at
  12. * @property \Illuminate\Support\Carbon|null $updated_at
  13. * @property \Illuminate\Support\Carbon|null $deleted_at
  14. * @property-read \App\Models\Client $client
  15. * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\CartItem> $items
  16. * @property-read int|null $items_count
  17. * @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Schedule> $schedules
  18. * @property-read int|null $schedules_count
  19. * @method static \Illuminate\Database\Eloquent\Builder<static>|Cart newModelQuery()
  20. * @method static \Illuminate\Database\Eloquent\Builder<static>|Cart newQuery()
  21. * @method static \Illuminate\Database\Eloquent\Builder<static>|Cart onlyTrashed()
  22. * @method static \Illuminate\Database\Eloquent\Builder<static>|Cart query()
  23. * @method static \Illuminate\Database\Eloquent\Builder<static>|Cart whereClientId($value)
  24. * @method static \Illuminate\Database\Eloquent\Builder<static>|Cart whereCreatedAt($value)
  25. * @method static \Illuminate\Database\Eloquent\Builder<static>|Cart whereDeletedAt($value)
  26. * @method static \Illuminate\Database\Eloquent\Builder<static>|Cart whereId($value)
  27. * @method static \Illuminate\Database\Eloquent\Builder<static>|Cart whereStatus($value)
  28. * @method static \Illuminate\Database\Eloquent\Builder<static>|Cart whereUpdatedAt($value)
  29. * @method static \Illuminate\Database\Eloquent\Builder<static>|Cart withTrashed(bool $withTrashed = true)
  30. * @method static \Illuminate\Database\Eloquent\Builder<static>|Cart withoutTrashed()
  31. * @mixin \Eloquent
  32. */
  33. class Cart extends Model
  34. {
  35. use HasFactory, SoftDeletes;
  36. protected $table = 'carts';
  37. protected $fillable = [
  38. 'client_id',
  39. 'provider_id',
  40. 'status',
  41. ];
  42. protected $casts = [
  43. 'status' => CartStatusEnum::class,
  44. 'created_at' => 'datetime',
  45. 'updated_at' => 'datetime',
  46. 'deleted_at' => 'datetime',
  47. ];
  48. public function client()
  49. {
  50. return $this->belongsTo(Client::class);
  51. }
  52. public function provider()
  53. {
  54. return $this->belongsTo(Provider::class);
  55. }
  56. public function payments()
  57. {
  58. return $this->hasMany(Payment::class);
  59. }
  60. public function items()
  61. {
  62. return $this->hasMany(CartItem::class);
  63. }
  64. public function schedules()
  65. {
  66. return $this->belongsToMany(Schedule::class, 'cart_items')
  67. ->withTimestamps();
  68. }
  69. }