Как вставить массив в BD Laravel - PullRequest
0 голосов
/ 08 декабря 2018

У меня есть консультация, мне нужно вставить массив, который я получаю из foreach представления, но в момент выполнения запросов в контроллере я получаю, что все значения равны нулю.

просмотр

@foreach($product as $prod)
<tr>
    <td>                                            
        <input  type ="text" name="name[]" value="{{ $prod->name}}" readonly="readonly">
    </td>
    <td>                                           
        <input type="text" name="price[]" class="price" value="{{ $prod->price}}" readonly="readonly">
    </td>
    <td>
        <input type="number" min="1" max="100" class="quantity" value="1" name="quantity[]">
    </td>
</tr>

@endforeach 

Контроллер

public function store(Request $request)
{
    for($i=0;$i<=2;$i++){
        $detail= new Detail;
        $detail->name= $request->input('name['.$i.']');
        $detail->quantity= $request->input('quantity['.$i.']');
        $detail->price= $request->input('price['.$i.']');
        $detail->created_at = Carbon::now();
        $detail->updated_at = Carbon::now();
        $detail->save();
   }

   return redirect()->route('view')->with('success','Exit');
}

Имя значения, цена и количество возвращают мне нулевые значения.

Результат dd($ request) вернул правильные значения массива

Ответы [ 2 ]

0 голосов
/ 08 декабря 2018

Нечто подобное может помочь вам

$input = $request->all();

    for($i=1; $i<= count($input['quantity']); $i++) {

      $data = [ 
        'name' => $input['name'][$i],
        'price' => $input['price'][$i],
        'quantity' => intval($input['quantity'][$i])
      ];

      Detail::create($data);
    }
0 голосов
/ 08 декабря 2018

for цикл в контроллере должен выглядеть примерно так: я создал массив для хранения данных и затем пакетно вставил весь массив.

$now = Carbon::now()->toDateTimeString();
$data = [];
for($i= 0; $i <= 2; $i++){
    $data[] = [
        'created_at'=>$now, 
        'updated_at'=>$now,
        'name' => $request->input("name[$i]"), //changed quotes type. 
        'price= $request->input("price[$i]")
        /* similar for other fields....*/

    ];
}

Detail::insert($data);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...