如何更新现有行添加在laravel中的表中插入新行以获取多个数组值

时间:2017-05-22 10:30:36

标签: laravel-5.4 laravel-query-builder

我有一个包含数组输入值的数据表,如下所示

<table>
    <tr>
    <td>Name</td>
    <td>Email</td>
    <td>Phone</td>
    </tr>
    <tr>
        <td><input type="text" name="user_id[]" value="1"></td>
        <td><input type="text" name="name[]"></td>
        <td><input type="text" name="email[]"></td>
        <td><input type="text" name="phone[]"></td>
    </tr>
    <tr>
        <td><input type="text" name="user_id[]" value="2"></td>
        <td><input type="text" name="name[]"></td>
        <td><input type="text" name="email[]"></td>
        <td><input type="text" name="phone[]"></td>
    </tr>
    <tr>
        <td><input type="text" name="user_id[]" value=""></td>
        <td><input type="text" name="name[]"></td>
        <td><input type="text" name="email[]"></td>
        <td><input type="text" name="phone[]"></td>
    </tr>
    <tr>
        <td><input type="text" name="user_id[]" value=""></td>
        <td><input type="text" name="name[]"></td>
        <td><input type="text" name="email[]"></td>
        <td><input type="text" name="phone[]"></td>
    </tr>
</table>

我试图用user_id值更新前两行,并尝试将最后两行作为新行插入。 我在laravel控制器中使用以下插入查询:

if(!empty(Input::get('user_id')))
{
    for($i = 0; $i < count(Input::get('name')); $i++) 
    {

        $id   = Input::get('user_id')[$i];
        $data = User::find($id);
        $data->name          = Input::get('name')[$i];
        $data->email         = Input::get('email')[$i];
        $data->phone         = Input::get('phone')[$i];
        $data->save();
  }
}

if(empty(Input::get('user_id')))
{
    for($i = 0; $i < count(Input::get('name')); $i++) 
    {
        $new                = new User();
        $new->name          = Input::get('name')[$i];
        $new->email         = Input::get('email')[$i];
        $new->phone         = Input::get('phone')[$i];
        $new->save();
  }
}

但它不能正常工作。有人可以建议我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

你应该使用一个foreach循环来循环遍历字段并做一些事情,如果它是空的。

也许,这样的事情会对你有所帮助。

$fields = Input::get('user_id');

foreach($fields as $field)
{
    if(! empty($field))
    {
        // field is not empty
        // update here
    }
    else
    {
        // field is empty
        // do something here
    }
}