How to save multiple inputs of rows in the same co

2020-03-26 08:18发布

Database table

id  | title | reading | writing | speaking

form.blade.php

<table><tr>
    <th>Language</th>
    <th>Reading</th>
    <th>Writing</th>
    <th>Speaking</th>
</tr>
<tr>
    <td>
        <input name="TitleText_1" id="TitleText_1"/></td>
    <td>
        <select name="ReadingText_1" id="ReadingText_1">
        <option value="High">High</option>
        <option value="Medium">Medium</option>
        <option value="Low">Low</option>
        </select>
    </td>
    <td>
        <select name="langWrittingText_1" id="WrittingText_1">
        <option value="High">High</option>
        <option value="Medium">Medium</option>
        <option value="Low">Low</option>
        </select>
    </td>
    <td>
        <select name="SpeakingText_1" id="SpeakingText_1">
        <option value="High">High</option>
        <option value="Medium">Medium</option>
        <option value="Low">Low</option>
        </select>
    </td>
</tr>
<tr>
    <td>
       <input name="TitleText_2" id="TitleText_2" /></td>
    <td>
        <select name="ReadingText_2" id="ReadingText_2">
        <option value="High">High</option>
        <option value="Medium">Medium</option>
        <option value="Low">Low</option>
        </select>
    </td>
    <td>
        <select name="WrittingText_2" id="WrittingText_2">
        <option value="High">High</option>
        <option value="Medium">Medium</option>
        <option value="Low">Low</option>
    </select>
    </td>
    <td>
        <select name="SpeakingText_2" id="SpeakingText_2">
        <option value="High">High</option>
        <option value="Medium">Medium</option>
        <option value="Low">Low</option>
        </select>
    </td>

LanguageController.php

   $languages = Language::create(array

   (

   'title' => $input['TitleText_1'],

   'reading' => $input['ReadingText_1'],

   'writting' => $input['WrittingText_1'],

   'speaking' => $input['SpeakingText_1'],
$languages->save();

  ));

I want what will be the controller code to save into the database. as there are multiple inputs of same label.

How to get all the inputs in controller? Also how to save multiple inputs into database of same column? I am a newbie of Laravel 4.2.

1条回答
太酷不给撩
2楼-- · 2020-03-26 08:45

Use multiple inputs with same name like this

<input name="TitleText[]" />
<select name="ReadingText[]" >
...
<select name="langWrittingText[]">
...
<select name="SpeakingText[]">
...

This way the data will be posted in the form of an array. Assuming that all the inputs/select are required to be filled by the user

In your controller you can do something like this

$count = count($input['TitleText']); // here we will know how many entries have been posted
$languages = array();
for($i=0; $i<$count; $i++){
   if(!empty($input['TitleText'][$i])){
     array_push($languages, array( // iterate through each entry and create an array of inputs
      'title' => $input['TitleText'][$i], 
      'reading' => $input['ReadingText'][$i], 
      'writting' => $input['WrittingText'][$i],
      'speaking' => $input['SpeakingText'][$i]
     ));
   }
}
Languages::insert($languages); // save the array of models at once

Hope this helps.

查看更多
登录 后发表回答