如果一件衬衫有很多尺码并且这些尺码可以属于很多衬衫,那么您必须定义一个多对多关系,您可以为衬衫尺码制作一个单独的表格sizes,然后创建一个第二个表 shirt_size 包含 shirt_id 和 size_id 将它们与外键链接到您的 shirts 和 sizes 表。
然后您将定义两个模型之间的适当关系
尺寸模型
class Size extends Model
{
// Get the shirts for this size.
public function shirts()
{
return $this->belongsToMany(Shirt::class, 'shirt_size', 'size_id', 'shirt_id');
}
}
衬衫模特
class Shirt extends Model
{
// Get the size for the shirt.
public function sizes()
{
return $this->belongsToMany(Size::class, 'shirt_size', 'shirt_id', 'size_id');
}
}
那么当您需要存储一件新衬衫的尺寸时,这取决于您发送的请求:
-
发送大小数组ids:
然后您需要使用validate 验证ID:
$validatedData = $request->validate([
'sizes.*.size_id' => 'required|integer|exists:sizes,id',
]);
-
发送大小数组names:
然后您需要使用validate 验证名称:
$validatedData = $request->validate([
'sizes.*.size_name' => 'required|string|exists:sizes,name',
]);
然后在创建衬衫记录后,您可以使用attach() 方法为衬衫保存多个尺寸:
foreach ($validatedData['sizes'] as $size){
$shirt->sizes()->attach($size['size_id']);
}
或者
foreach ($validatedData['sizes'] as $size){
$size_id = Size::where('size_name',$size['name'])->get('id'));
$shirt->sizes()->attach($size_id);
}