ekart/backend/app/Models/Cart.php
kusowl 03f044b8d3 chore: add ide helper
- add laravel ide helper package for better LSP support
- update dependencies
2026-03-13 10:08:55 +05:30

68 lines
1.9 KiB
PHP

<?php
namespace App\Models;
use App\Enums\CartStatus;
use Illuminate\Database\Eloquent\Attributes\Scope;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
/**
* @property int $id
* @property int $user_id
* @property CartStatus $status
* @property \Illuminate\Support\Carbon|null $created_at
* @property \Illuminate\Support\Carbon|null $updated_at
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Product> $products
* @property-read int|null $products_count
* @property-read \App\Models\User|null $user
* @method static Builder<static>|Cart active()
* @method static Builder<static>|Cart newModelQuery()
* @method static Builder<static>|Cart newQuery()
* @method static Builder<static>|Cart query()
* @method static Builder<static>|Cart whereCreatedAt($value)
* @method static Builder<static>|Cart whereId($value)
* @method static Builder<static>|Cart whereStatus($value)
* @method static Builder<static>|Cart whereUpdatedAt($value)
* @method static Builder<static>|Cart whereUserId($value)
* @method static Builder<static>|Cart withProducts()
* @mixin \Eloquent
*/
class Cart extends Model
{
protected $fillable = ['user_id', 'status'];
protected function casts()
{
return [
'status' => CartStatus::class,
];
}
public function products()
{
return $this->belongsToMany(Product::class)
->withPivot('price', 'quantity')
->withTimestamps();
}
public function user()
{
return $this->belongsTo(User::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');
}]);
}
}