ekart/backend/app/Models/Cart.php
2026-03-25 17:17:35 +05:30

60 lines
1.3 KiB
PHP

<?php
namespace App\Models;
use App\Enums\Cart\CartStatus;
use Illuminate\Database\Eloquent\Attributes\Scope;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
/**
* @mixin IdeHelperCart
*/
class Cart extends Model
{
protected $fillable = ['user_id', 'status'];
public function products(): BelongsToMany
{
return $this->belongsToMany(Product::class)
->withPivot('price', 'quantity')
->withTimestamps();
}
public function user(): BelongsTo
{
return $this->belongsTo(User::class);
}
public function order(): BelongsTo
{
return $this->belongsTo(Order::class);
}
/**
* @return array<string, string>
*/
protected function casts(): array
{
return [
'status' => CartStatus::class,
];
}
#[Scope]
protected function active(Builder $query)
{
return $query->where('status', CartStatus::Active);
}
#[Scope]
protected function withProducts(Builder $query)
{
return $query->with(['products' => function ($product) {
$product->withPivot('quantity', 'price');
}]);
}
}