【问题标题】:Update multiple data from <select> <option> in database using laravel 5.1使用 laravel 5.1 从数据库中的 <select> <option> 更新多个数据
【发布时间】:2016-02-15 02:48:45
【问题描述】:

我有一些编码,我想使用 laravel 5.1 从数据库中的选择选项值更新多个数据。我正在使用 ajax onchange="form.submit()",所以我可以在不提交的情况下更新数据。 这是我的看法

{!! Form::model($UserAccess,['method' => 'POST','url'=>['setting/updaterole']]) !!}
                        <table class="dataTable" id="table-user">
                            <thead class="grey lighten-3">
                                <tr>
                                    <td class="center-align no-sort">Photo</td>
                                    <td class="center-align">Fullname</td>
                                    <td class="center-align">Rule</td>
                                    <td class="center-align">Action</td>
                                </tr>
                            </thead>
                            <tbody>
                                <?php $hitung = $UserAccess->count(); ?>
                                @foreach($UserAccess as $list)
                                <tr>
                                    <td class="center-align" width="50">
                                        @if($list->avatar == NULL)
                                        <img class="circle responsive-img" width="50" src="{{asset(config('param.url_uploads').'blank.jpg')}}"/>
                                        @else
                                        <img class="circle responsive-img" width="50" src="{{$list->avatar}}"/>
                                        @endif
                                    </td>
                                    <td class="red1-text lato-bold center-align">{{$list->name}}</td>
                                    <td class="center-align" width="150">
                                        <select id="selectrole" name="selectrole" onchange="form.submit()">
                                            @foreach($UserAccessRole as $listRole)
                                                <option value="{{$listRole->id}}" @if($list->user_access_role_id_fk == $listRole->id) selected="selected"@endif>{{$listRole->name}}</option>
                                            @endforeach
                                        </select>
                                    </td>
                                    <input type = "hidden" value = "{{$list->id}}" name = "idmain">
                                    @if($hitung > 2)
                                        <td class="center-align">
                                            <a href = "remove_access/{{$list->id}}/delete" >Remove Access<a/>
                                        </td>
                                    @else
                                        <td class="center-align">Remove Access</td>
                                    @endif
                                </tr>
                                @endforeach
                            </tbody>
                        </table>
                        {!! Form::close() !!}

这是我的控制器

public function doUpdateAccessRole(Request $request)
  {
    $UserAccess = UserAccess::orderBy('name', 'asc')->get();
    $id_main = $request->input('idmain');
    $id_role = $request->input('selectrole');
    $Role = UserAccess::findOrFail($id_main);
    $Role->user_access_role_id_fk = $id_role;
    $Role->update($request->all());
    return redirect('setting/useraccess');
  }

这是我的路线

Route::post('setting/updaterole',['uses'=>'SettingController@doUpdateAccessRole','as'=>'updateaccessrole']);

使用我的编码更新功能已经可以使用,但只是最后一个 id 已更新。请帮帮我,谢谢

【问题讨论】:

  • 请多解释一下,上次更新 ID 是为了什么?您是否尝试为单个用户更新多个角色? $Role-&gt;update($request-&gt;all()); 适用于单条记录。你要更新多条记录,你需要sync()方法
  • @Qazi tq 供您发表评论。我的意思是最后一次 id 更新是,例如我有 3 个数据。第一个数据的 id 为 1,数据二的 id 为 2,最后一个数据的 id 为 3。如果我使用我的程序更新,则只有 id 为 3 的数据已更新。请给我解释一下,我需要sync()方法是什么意思,谢谢。
  • 例如:用户有很多角色(1=>学生,2=>作者,12=>讲师)都是从多选下拉列表中选择的,所以在 PHP 结束时,你会得到这样的 @987654326 @ 所以,你必须将所有角色与用户一起添加,遵循这个 '$user->roles()->sync($roles);'看here
  • @Qazi 我还是没明白。我不明白如何使用sync()
  • 您是否为用户角色创建了关系?实际上你没有为用户和角色提供你的数据库结构,这就是为什么不能正确猜测它的原因。试试这个$Role-&gt;sync($id_role); 而不是你的这个代码$Role-&gt;update($request-&gt;all());

标签: php laravel laravel-5.1


【解决方案1】:

我的代码已经可以工作了。只需在我的控制器中添加 foreach 。像这样,我的控制器:

public function doUpdateAccessRole(Request $request)
{

$UserAccess = UserAccess::all();
foreach($UserAccess as $list)
{
  $id_main = $request->input('idmain'.$list->id);
  $id_role = $request->input('selectrole'.$list->id);
  $Role = UserAccess::find($id_main);
  $Role->user_access_role_id_fk = $id_role;
  $Role->update($request->all());
}
  return redirect('setting/useraccess');
}

这是我的观点:

{!! Form::model($UserAccess,['method' => 'POST','url'=>['setting/updaterole']]) !!}
                        <table class="dataTable" id="table-user">
                            <thead class="grey lighten-3">
                                <tr>
                                    <td class="center-align no-sort">Photo</td>
                                    <td class="center-align">Fullname</td>
                                    <td class="center-align">Rule</td>
                                    <td class="center-align">Action</td>
                                </tr>
                            </thead>
                            <tbody>
                                <?php $hitung = $UserAccess->count(); ?>
                                @foreach($UserAccess as $list)
                                <tr>
                                    <td class="center-align" width="50">
                                        @if($list->avatar == NULL)
                                        <img class="circle responsive-img" width="50" src="{{asset(config('param.url_uploads').'blank.jpg')}}"/>
                                        @else
                                        <img class="circle responsive-img" width="50" src="{{$list->avatar}}"/>
                                        @endif
                                    </td>
                                    <td class="red1-text lato-bold center-align">{{$list->name}}</td>
                                    <td class="center-align" width="150">
                                        <select id="selectrole" name="selectrole{{$list->id}}" onchange="form.submit()">
                                            @foreach($UserAccessRole as $listRole)
                                                <option value="{{$listRole->id}}" @if($list->user_access_role_id_fk == $listRole->id) selected="selected"@endif>{{$listRole->name}}</option>
                                            @endforeach
                                        </select>
                                    </td>
                                    <input type = "hidden" value = "{{$list->id}}" name = "idmain{{$list->id}}">
                                    @if($hitung > 2)
                                        <td class="center-align">
                                            <a href = "remove_access/{{$list->id}}/delete" >Remove Access<a/>
                                        </td>
                                    @else
                                        <td class="center-align">Remove Access</td>
                                    @endif
                                </tr>
                                @endforeach
                            </tbody>
                        </table>
{!! Form::close() !!}

现在我的编码已经可以工作了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-26
    • 1970-01-01
    • 2017-08-15
    相关资源
    最近更新 更多