diff --git a/app/Models/ProductPart.php b/app/Models/ProductPart.php index 3695bf34..c10113f4 100644 --- a/app/Models/ProductPart.php +++ b/app/Models/ProductPart.php @@ -45,9 +45,6 @@ class ProductPart extends Model return $this->hasMany(ProductPartSku::class, 'part_id')->orderBy('sort', 'desc'); } - /** - * 属于此分区的商品 - */ public function skus() { return $this->belongsToMany(ProductSku::class, ProductPartSku::class, 'part_id', 'sku_id')->withTimestamps(); @@ -55,7 +52,7 @@ class ProductPart extends Model public function spus() { - return $this->belongsToMany(ProductSpu::class, ProductPartSku::class, 'part_id', 'sku_id')->withTimestamps(); + return $this->belongsToMany(ProductSpu::class, ProductPartSpu::class, 'part_id', 'spu_id')->withTimestamps(); } /** diff --git a/app/Models/ProductPartSpu.php b/app/Models/ProductPartSpu.php new file mode 100644 index 00000000..8eb28a21 --- /dev/null +++ b/app/Models/ProductPartSpu.php @@ -0,0 +1,47 @@ + 0, + ]; + + /** + * @var array + */ + protected $fillable = [ + 'part_id', + 'sku_id', + 'sort', + ]; + + public function spu() + { + return $this->belongsTo(ProductSpu::class, 'sku_id'); + } + + /** + * 此分区商品所属的分区 + */ + public function part() + { + return $this->belongsTo(ProductPart::class, 'part_id'); + } +} diff --git a/database/migrations/2022_06_15_093902_create_product_part_spu_table.php b/database/migrations/2022_06_15_093902_create_product_part_spu_table.php new file mode 100644 index 00000000..a19a3934 --- /dev/null +++ b/database/migrations/2022_06_15_093902_create_product_part_spu_table.php @@ -0,0 +1,36 @@ +id(); + $table->foreignId('part_id')->constrained('product_parts')->onDelete('cascade')->comment('分区 ID'); + $table->foreignId('spu_id')->constrained('product_spus')->onDelete('cascade')->comment('商品 ID'); + $table->integer('sort')->default(0)->comment('排序'); + $table->timestamps(); + + $table->unique(['part_id', 'spu_id']); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('product_part_spu'); + } +}