首页 > 解决方案 > 从数据库编辑页面复选框值

问题描述

我有一张如下表

id |    name    |   pic   |     level     |  team
1     John          3           user           
2     Ipsum         4           user           
3     Lorem         5          supervisor     
4     Dolor Amet    5           admin         
5     Amet                     manager        3,4
6     Diego         7           user          
7     Michael       5           supervisor    

作为用户 ID 5,我想在复选框值中显示我可以看到的团队,并在复选框中编辑或更改它。我试过了,但这是错误的。已检查的用户 id 3 也会再次显示为未选中的值,如下所示截屏

所以视图必须像 ipsum(checked) 和 dolor(not check) 一样这张照片

这是刀片视图代码

 @foreach($supervisor as $spv)          
    <div class="checkbox">
    @foreach($result as $res)
       @if($spv->id == $res->id)
         <label>
         <input type="checkbox" name="spv[]" value="{{ $spv->id }}" checked>{{ $spv->name }}
         </label>
       @else 
         <label>
         <input type="checkbox" name="spv[]" value="{{ $spv->id }}">{{ $spv->name }}

         </label>
      @endif
     @endforeach
   </div>
   @endforeach

这是控制器代码

$query = DB::table('users')->where('id',$id)->first();

$list=explode(',', $query->team);
$result = DB::table('users')->whereIn('id',$list)->get();

$supervisor = Users::where('level','supervisor')->orWhere('level','admin')->get();

你知道失踪在哪里吗?

标签: phpmysqllaravel

解决方案


你可以试试这个:

在您的控制器中压缩$list变量,因为它是团队 ID 的数组:

$query = DB::table('users')->where('id',$id)->first();

$list=explode(',', $query->team);
$result = DB::table('users')->whereIn('id',$list)->get();

$supervisor = Users::where('level','supervisor')->orWhere('level','admin')->get();

return view('your-blade-view', compact('result', 'supervisor', 'list'));

然后在你的刀片中:

 @foreach($supervisor as $spv)          
     <div class="checkbox">
         <label>
             <input type="checkbox" name="spv[]" value="{{ $spv->id }}" {{ ( in_array($spv->id, $list) ) ? 'checked' : '' }}>{{ $spv->name }}
         </label>
     </div>
 @endforeach

我希望它会有所帮助。


推荐阅读