2016-11-09 9 views
2

My Dynamic form use blade template복수의 동적 양식을 사용 laravel의 데이터

컨트롤러 코드를 저장하는 방법 :

$productPrice=$request->only('unit_id','size_id','color_id','price'); 
     dd($productPrice); 

컨트롤러 DD 출력 :

array:4 [▼ 
    "unit_id" => array:3 [▼ 
    0 => "3" 
    1 => "7" 
    2 => "1" 
    ] 
    "size_id" => array:3 [▼ 
    0 => "2" 
    1 => "1" 
    2 => "4" 
    ] 
    "color_id" => array:3 [▼ 
    0 => "1" 
    1 => "6" 
    2 => "9" 
    ] 
    "price" => array:3 [▼ 
    0 => "32000" 
    1 => "4280" 
    2 => "5655" 
    ] 
] 

PRODUCT_PRICE 테이블을 사용 laravel 쉽게이 (가) 데이터를 저장하는 방법 방법??

+0

귀하의 양식 필드를 보여 주거나 어떤 모델을 갖고 있는지 말해주십시오 – lewis4u

답변

1

리피터를 사용하면 양식 데이터를 문자열 (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'], 
    ]); 
} 
+0

귀하의 친절한 정보 귀하의 정보는 귀하가 여기에서 설명하는 것과 같습니다. 귀하의 도움을 주셔서 감사합니다 @ yohanan-baruchel –

+0

내 양식 그림 (https://i.stack.imgur.com/Uxwxi.png)처럼 양식 삭제 버튼 그룹으로 내 업데이트 양식을 보는 방법 –

+0

죄송합니다. 제거 버튼에 대한 귀하의 질문에 답하십시오. 무엇을하려고합니까? –