【发布时间】:2019-05-22 12:35:03
【问题描述】:
我正在努力解决这种我认为是多对多的关系,我有 3 个模型,一个衬衫模型,一个衬衫颜色模型和一个衬衫尺寸模型。现在这就是我看待事物的方式,我可以说:
一件衬衫可以有多种颜色和多种尺码,但您也可以说一件衬衫只有一种颜色和一种尺码(一件衬衫不能同时有多种颜色/尺码......),所以这让我很困惑.我觉得这必须是衬衫、尺寸和颜色之间的多对多关系,但我不太确定如何(如果我应该)做到这一点?
这是我的迁移:
Schema::create('shirts', function (Blueprint $table) {
$table->increments('id');
$table->string('slug')->unique();
$table->string('url')->unique();
$table->string('title')->unique();
$table->longText('body');
$table->decimal('finalPrice', 5,2);
$table->integer('totalCount');
$table->string('image')->nullable();
$table->boolean('isVisible')->default(false);
$table->boolean('beenPublished')->default(false);
$table->boolean('scheduleForMail')->default(false);
$table->timestamps();
});
Schema::create('shirtcolors', function (Blueprint $table) {
$table->increments('id');
$table->string('title');
$table->string('hexColor');
$table->timestamps();
});
Schema::create('shirtsizes', function (Blueprint $table) {
$table->increments('id');
$table->string('title')->nullable();
$table->timestamps();
});
【问题讨论】:
-
是否会出现尺寸/颜色组合不可用的情况? IE。 SM/Blue、SM/Red 和 MD/Blue 都有,但 MD/Red 不行? (或类似的东西)
-
是的,我想是的,每件衬衫也会有一个 stock left 属性。
-
好的。然后(就个人而言),我将为
shirts(想想产品)提供一个表,为shirt_variations提供一个表。在那张桌子上,我有colour(或colour_id,如果你想将颜色存储在单独的表格中),size(或size_id)也是如此。您也可以将不同的价格/库存附加到该表的列上,并且只为每个变体包含一行。有人可能有更好的解决方案,但这是我的想法。不过,这个问题可能属于“主要基于意见”的关闭原因。