【问题标题】:How to save multiple inputs of rows in the same column of database?如何在数据库的同一列中保存多个行的输入?
【发布时间】:2015-04-28 07:10:10
【问题描述】:

数据库表

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>

语言控制器.php

   $languages = Language::create(array

   (

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

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

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

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

  ));

我想要将控制器代码保存到数据库中。因为有多个相同标签的输入。

如何获取控制器中的所有输入?另外如何将多个输入保存到同一列的数据库中?我是 Laravel 4.2 的新手。

【问题讨论】:

    标签: php mysql laravel laravel-4 eloquent


    【解决方案1】:

    像这样使用多个同名输入

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

    这样数据将以数组的形式发布。 假设所有的输入/选择都需要用户填写

    在你的控制器中你可以做这样的事情

    $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
    

    希望这会有所帮助。

    【讨论】:

    • 它显示了这个错误:: ERROR: exception 'BadMethodCallException' with message 'Call to undefined method Illuminate\Database\Query\Builder::saveMany() @Dhiraj Bodhicherla
    • 它可以工作...但是我面临的一个问题是,如果三个标签中的一个被填充,它不仅可以保存一个我填充的标签,而且我没有填充保存在具有空白值的数据库以及如何在浏览器中仅显示填充值。请帮助@Dhiraj Bodicherla ..
    • 你说的是TitleText吗?
    • 是的,如果没有全部填写,那么我只想显示已填写的标签,并且只将已填写的标签保存到数据库中。但是现在如果我只填写一个,它还会用空白值保存两个标签的其余部分,并在浏览器中显示空白值。如何解决这个问题?
    • 而不是isset 试试!empty 像这样if(!empty($input['TitleText'][$i])){ 或者你可能只使用if($input['TitleText'][$i]){
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-29
    • 2015-10-23
    相关资源
    最近更新 更多