diff --git a/beike/Models/CartProduct.php b/beike/Models/CartProduct.php index ab14b58c..f617f8cb 100644 --- a/beike/Models/CartProduct.php +++ b/beike/Models/CartProduct.php @@ -25,4 +25,9 @@ class CartProduct extends Model { return $this->belongsTo(ProductSku::class, 'product_sku_id', 'id'); } + + public function product(): BelongsTo + { + return $this->belongsTo(Product::class, 'product_id', 'id'); + } } diff --git a/beike/Shop/Services/CartService.php b/beike/Shop/Services/CartService.php index 0697fdd1..d3be7f61 100644 --- a/beike/Shop/Services/CartService.php +++ b/beike/Shop/Services/CartService.php @@ -31,13 +31,23 @@ class CartService return []; } $cartBuilder = CartProduct::query() - ->with(['sku.product.description']) + ->with(['product', 'sku.product.description']) ->where('customer_id', $customer->id) ->orderByDesc('id'); if ($selected) { $cartBuilder->where('selected', true); } $cartItems = $cartBuilder->get(); + + $cartItems = $cartItems->filter(function ($item) { + $description = $item->sku->product->description ?? ''; + $product = $item->product ?? null; + if (empty($description) || empty($product)) { + $item->delete(); + } + return $description && $product; + }); + $cartList = CartList::collection($cartItems)->jsonSerialize(); return $cartList; } diff --git a/database/migrations/2022_06_23_075504_create_customer_table.php b/database/migrations/2022_06_23_075504_create_customer_table.php index aeb89197..1b792d96 100644 --- a/database/migrations/2022_06_23_075504_create_customer_table.php +++ b/database/migrations/2022_06_23_075504_create_customer_table.php @@ -21,7 +21,6 @@ class CreateCustomerTable extends Migration $table->string('avatar')->default(''); $table->unsignedInteger('customer_group_id'); $table->string('locale', 10); - $table->text('cart')->nullable(); $table->tinyInteger('status')->default(0); $table->string('code', 40)->default(''); $table->string('from', 16)->default('');