【发布时间】: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->update($request->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->sync($id_role);而不是你的这个代码$Role->update($request->all());
标签: php laravel laravel-5.1