<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Storage;
class Cart extends Model
{
use HasFactory;
protected $casts = [
'created_at' => 'date:m-d-Y',
'updated_at' => 'date:m-d-Y',
];
protected $fillable = [
'user_id',
'product_id',
'price_id',
'customization',
'attachment',
'quantity',
'created_at',
'updated_at',
];
public function product()
{
return $this->belongsTo(Product::class, 'product_id');
}
protected function getAttachmentUrlAttribute()
{
return $this->attachment
? asset('storage/order/'.$this->attachment)
: $this->attachment;
}
public function price()
{
return $this->belongsTo(ProductPrice::class, 'price_id');
}
public function items()
{
return $this->hasMany(CartItem::class, 'cart_id');
}
public static function boot() {
parent::boot();
static::deleting(function($cart) {
if ($cart->attachment){
if (Storage::disk('order')->exists($cart->attachment)){
Storage::disk('order')->delete($cart->attachment);
}
}
});
}
}