我有两个表组(父)和用户(孩子)。我可以从每个组中读取数据,但我想在多选中显示它们,这样我就可以删除或添加更多用户到组中并进行更新。
集团控制人:
public function edit($id)
{
//
$group= Group::find($id);
$users = User::where('group_id',$id)->get();
return view('group.edit',compact('group','users'));
}
public function update(Request $request, $id)
{
$request->validate([
'name'=> 'required',
'group_id' => 'required|array',
]);
$group = Group::find($id);
$group ->name = $request->get('name');
//something missing/wrong here
$group->save();
return redirect('/groups')->with('success', 'Group has been edited');
}
用户模型:
public function group()
{
return $this->belongsTo('App\Group');
}
集团模式
public function users()
{
return $this->hasMany('App\User','group_id');
}
编辑视图:
<form method="post" action="{{ route('groups.update', $group->id) }}">
@method('PATCH')
@csrf
<div class="form-group">
<label for="name">Name:</label>
<input type="text" class="form-control" name="name" value={{ $group->name }} />
</div>
<div class="form-group">
<select name="group_id[]" id="users" class="form-control" multiple>
@foreach ($users as $user)
<option value="{{$user->id}}">{{$user->name}}</option>
@endforeach
</select>
</div>
<a href="{{url()->previous()}}" class="pull-right btn btn-danger" >Cancel</a>
<button type="submit" class="pull-right btn btn-primary" style="margin-right:5px;">Update</button>
</form>
数据库结构:
组表:
ID 名称
用户表:
ID 名称 电子邮件 GROUP_ID
我正在使用select2包,这就是我想要做的:
谢谢
我认为它会起作用
$group = Group::find($id)->delete();
$name= $request->input('name');
$group_ids= $request->input('group_id')
foreach($group_ids as $group_id){
$group = new Group();
$group ->name= $name;
$group ->group_id= $group_id;
$group->save();
}
嗨,这对我有用,我希望它对你有用。编辑
$group= Group::find($id);
$allUsers=['users'=>User::get()->pluck('name','id')];
$users = User::where('group_id',$id)->pluck('id')->toArray();
return view('group.edit',compact('group','users','allUsers'));
在你的观点
{!! Form::select("group_id[]",array_get($allUsers,'allUsers'),$users,["class"=>"form-control select2","multiple"=>'multiple']) !!}
最后在您的更新中
我无法弄清楚究竟发生了什么,但您的更新中会有用户ID