Создать таблицу "shirt_size_colors"
php artisan make:migration create_shirt_size_colors_table
В миграции:
Schema::create('shirt_size_colors', function (Blueprint $table) {
$table->bigIncrements('id');
$table->unsignedBigInteger('shirt_id');
$table->foreign('shirt_id')->references('id')->on('shirts')->onDelete('cascade');
$table->unsignedBigInteger('color_id');
$table->foreign('color_id')->references('id')->on('shirtcolors')->onDelete('cascade');
$table->unsignedBigInteger('size_id');
$table->foreign('size_id')->references('id')->on('shirtsizes')->onDelete('cascade');
$table->timestamps();
});
По вашему вопросу вы можете добавить сюда одну рубашку одного цвета и одного размера.
и одна рубашка с несколькими цветами и размерами.
Например:
за одну рубашку одного цвета и одного размера
рубашка ID 1, цвет ID 1, размер ID 1
затем запись в таблице согласно ниже
-------------------------------------
shirt_id | color_id | size_id |
-------------------------------------
1 | 1 | 1 |
-------------------------------------
Для одной рубашки с несколькими цветами и несколькими размерами
рубашка ID 2, цвет ID [1,2], размер ID [1,2]
затем запись в таблице согласно ниже
-------------------------------------
shirt_id | color_id | size_id |
-------------------------------------
2 | 1 | 1 |
-------------------------------------
-------------------------------------
2 | 1 | 2 |
-------------------------------------
------------------------------------
2 | 2 | 1 |
-------------------------------------
-------------------------------------
2 | 2 | 2 |
-------------------------------------
Создать модель
php artisan make:model ShirtSizeColors
Модель ShirtSizeColors
Здесь я использую модель Shirt, ShirtSize, ShirtColor, которую вы можете заменить названием вашей модели
protected $table = 'shirt_size_colors';
public $timestamps = true;
protected $fillable = ['shirt_id', 'color_id', 'size_id'];
//for shirt data
public function shirt(){
return $this->belongsTo(Shirt::class, 'shirt_id');
}
//for color data
public function color(){
return $this->belongsTo(ShirtColor::class, 'color_id');
}
//for size data
public function size(){
return $this->belongsTo(ShirtSize::class, 'size_id');
}
Теперь отношения в рубашке модели
// for get shirt colors and sizes
public function shirt_size_colors(){
return $this->hasMany(ShirtSizeColors::class, 'shirt_id');
}