php – Laravel Sync方法只发送第二个数据
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – Laravel Sync方法只发送第二个数据,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1792字,纯文字阅读大概需要3分钟。
内容图文
![php – Laravel Sync方法只发送第二个数据](/upload/InfoBanner/zyjiaocheng/779/c8c6ff5b4cf84c798b0425785a3bce9c.jpg)
这段代码应该是从数据库中删除所有旧数据以及添加新数据时(使用sync())
现在我有一个用户项目,用户可以通过复选框链接到项目.
因此,在复选框上选中此功能将触发,但是例如当我说用户1和用户2正在通过此功能添加到数据透视表时它将只发送用户2,而用户1将无法通过,这是什么出错了?
当我添加3个用户1,用户2,用户3时,只会添加用户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应该是值.
解决方法:
问题是同步在循环中被调用3次,所以每次同步一个值.你必须在同步ex中传递一组id:
$project->users()->sync([1,3,2]);
或者如果你想要,你可以在贡献== 1时使用附加,并在贡献== 0时分离
或者,如果在取消选择用户时,贡献不返回输入,并且仅在选择用户时返回,则可以尝试:
$this->project->users()->sync(array_keys($request->get('contribute'));
我只是注意到你有另一个bug,除非你通过一次调用更新许多项目,你应该将下面的行放在你函数的第一行.
$project = $this->project->find($request->project_id);
内容总结
以上是互联网集市为您收集整理的php – Laravel Sync方法只发送第二个数据全部内容,希望文章能够帮你解决php – Laravel Sync方法只发送第二个数据所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。