Сохранить несколько входов Laravel 5.6 - PullRequest
0 голосов
/ 31 августа 2018

Я пытаюсь сохранить данные в моей базе данных, поступающие из 2 входов, которые имеют несколько значений. Сценарий заключается в том, что после сохранения продукта данные будут сохранены в моей другой таблице со столбцами «product_id», «price», «size». Как бы то ни было, когда я пытался запустить свой код, в столбце «размер» сохраняется только первое значение, данные в «цене» в порядке.

<input name="fix_size[]">
<input name="fix_price[]">

 foreach($request->fix_price as $prc){

            $cprice = new ContainerPrice;
            $cprice->product_id = $id;
            $cprice->price = $prc;

            foreach($request->fix_size as $size){
                $cprice->size = $size;
            }

            $cprice->save();

        }

Ответы [ 3 ]

0 голосов
/ 31 августа 2018

Попробуйте это

foreach($request->fix_price as $prc){

            foreach($request->fixed_size as $size){
                $cprice = new ContainerPrice;
                $cprice->product_id = $id;
                $cprice->price = $prc;
                $cprice->size = $size;
                $cprice->save();
            }
}
0 голосов
/ 31 августа 2018

Помните, fix_size и fix_price являются массивами.

Вы должны получить соответствующие пары каждого fix_size и fix_price. Таким образом, вы должны следить за индексом в цикле.

Это одно из возможных решений вашей проблемы:

$fix_sizes = $request->fix_size;
foreach($request->fix_price as $i => $prc){
    $cprice = new ContainerPrice;
    $cprice->product_id = $id;
    $cprice->price = $prc;
    $cprice->size = $fix_sizes[$i];

    $cprice->save();
}

Я могу предложить вам освоить основные принципы программирования и научиться самостоятельно отлаживать коды.

0 голосов
/ 31 августа 2018

Вы можете попробовать это:

foreach($request->fix_price as $key => $prc) {
    $cprice = new ContainerPrice;

    $cprice->product_id = $id;
    $cprice->price = $prc;
    $cprice->size = $request->input('size')[$key];

    $cprice->save();

}

Ваша проблема в том, что вы перебираете все элементы внутри основного цикла и сохраняете только последний элемент. Другими словами, в цикле foreach вы постоянно переопределяете свойство $cprice->size последним, которое найдете.

Теперь с помощью этого кода вы получаете доступ к «размеру», индекс которого совпадает с вашим «ценой».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...