【发布时间】:2015-08-01 22:38:47
【问题描述】:
这段代码应该是从数据库中删除所有旧数据并添加新数据时(使用sync())
现在我有一个包含用户的项目,用户可以通过复选框链接到项目。
所以选中复选框时,此功能将触发,但例如,当我说 user 1 和 user 2 正在通过此功能添加到 pivot table 时,它只会发送 user 2 和 @987654326 @打不通,怎么回事?
当我添加 3 个用户 user 1、user 2、user 3 时,只会添加 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');
}
刀片
@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
在我的更新方法开始时的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"
]
所以1 / 3 / 2 将是user_id 而=> 1 应该是值。
【问题讨论】:
-
到目前为止你调试了吗?
-
是的,如果我放一个 dd($request->input());在我的更新方法开始时,它将返回:i.gyazo.com/f62f6de596a66e4eb0c55fba0e46ffcb.png,这实际上应该是正确的