这段代码应该从数据库中删除所有旧数据,并在添加新数据时(使用sync())
现在我有一个包含用户的项目,并且可以使用复选框将用户链接到项目。
因此,在选中复选框时,此功能将触发,但例如当我这么说时user 1
and user 2
正在通过此功能添加到pivot table
它只会发送user 2
, and user 1
打不通,出了什么问题?
当我添加 3 个用户时user 1
, user 2
, user 3
, only user 2
将被添加。
控制器
public function update(CreateProjectRequest $request)
{
if($request->get('contribute'))
{
foreach($request->get('contribute') as $k => $contribute)
{
if($contribute == 1)
{
$project = $this->project->find($request->project_id);
$project->users()->sync(array($k));
}
}
}
$project = $this->project->find($request->project_id);
$project->fill($request->input())->save();
return redirect('project');
}
Blade
@foreach($users as $user)
<tr>
<td>
{{$user->firstname}} {{$user->middlename}} {{$user->lastname}}
</td>
<td>
{!! Form::checkbox('contribute['.$user->id.']', '1', $user->projects->contains('id', $project->id)) !!}
</td>
</tr>
@endforeach
On a dd($request->input());
在我的更新方法开始时(选择至少 3 个用户),这将得到回报:
array:9 [▼
"_method" => "PATCH"
"_token" => "0uIZNn6zwZjVKfgE0ckhDULeYda0OaLzKVdUgoM8"
"name" => "Dire Straits"
"completion_date" => "2015-05-18"
"DataTables_Table_0_length" => "10"
"contribute" => array:3 [▼
1 => "1"
3 => "1"
2 => "1"
]
"completed" => "1"
"active" => "0"
"project_id" => "11"
]
So 1 / 3 / 2
将是user_id
and => 1
应该是值。