리피터를 사용하면 양식 데이터를 문자열 (serialize())로 변환하고 '가격'에 저장하지 않으면 제품의 동일한 테이블에 데이터를 저장할 수 없습니다. '행을 제품 테이블에서 DB에 데이터를 저장하는 아주 나쁜 방법.
이러한 상황에서 가장 좋은 방법은 제품의 다양한 가격을 저장하기위한 새 테이블을 만드는 것이므로 테이블이 이렇게 보일 것입니다.
제품 테이블 :
| id | name | more columns | created_at | updated_at |
----------------------------------------------------------------------------
| 1 |"product1" | 0 |2016-01-31 00:27:16 |2016-01-31 00:27:16|
| 2 |"product2" | 1 |2016-01-31 00:27:16 |2016-01-31 00:37:16|
| 3 |"product3" | 0 |2016-01-31 00:27:16 |2016-01-31 01:47:04|
제품 가격 테이블 : 당신이 원하는 그래서
| id | product_id | unit | size | color | price |created_at| updated_at |
----------------------------------------------------------------------------
| 1 | 1 | 0 | 3 | 2 | 421 |2016-01.. |2016-01.. |
| 2 | 1 | 3 | 2 | 5 | 121 |2016-01.. |2016-01.. |
| 3 | 1 | 4 | 4 | 1 | 531 |2016-01.. |2016-01.. |
이 방법, 제품은 당신이해야 할 유일한 것은이다, 많은 가격을 가질 수 있습니다 그 테이블의 모델에서 관계를 만드는 것.
는 제품 모델에서 당신은 추가 할 수 있습니다
public function prices() {
return $this->hasMany(ProductPrice::class, 'product_id');
}
그리고이 관계를 작동하게하는 ProductPrice 모델을해야 할 것이다 물론
.
개인적으로 나는이 같은 하위 모델의 reation (가격 모델)을 추가합니다 :
이
public function product() {
return $this->belongsTo(Product::class, 'product_id');
}
UPDATE : 이제
당신이 그 모델을 가지고, 당신이 만들 수 있습니다 다음 코드를 사용하는 새로운 ProductPrice 항목 :
foreach($productPrice['unit_id'] as $k => $unit) {
$product->prices()->create([
'unit' => $productPrice['unit_id'][$k]
'size' => (isset($productPrice['size_id'][$k])) $productPrice['size_id'][$k] ? : 0;
'color' => (isset($productPrice['color_id'][$k])) $productPrice['color_id'][$k] ? : 0;
'price' => (isset($productPrice['price'][$k])) $productPrice['price'][$k] ? : 0;
]);
}
하지만이 foreach는 재미있을 것 같습니다. 코드 청소기를 만들기 위해 딩 배열로 각각 가격 유형의 형태로 데이터를이 같은 형태의 배열을 보낼 수 있도록 :
productPrice[][unit_id]
productPrice[][size_id]
productPrice[][color_id]
productPrice[][price]
를 그래서 다음 foreach는 코드는 다음과 같이 표시됩니다 :
$productPrices = $request->only('productPrice');
foreach($productPrices as $productPrice) {
$product->prices()->create([
'unit' => $productPrice['unit_id'],
'size' => $productPrice['size_id'],
'color' => $productPrice['color_id'],
'price' => $productPrice['price'],
]);
}
귀하의 양식 필드를 보여 주거나 어떤 모델을 갖고 있는지 말해주십시오 – lewis4u