当多个选择框为空时,返回空值 - 这会在对数据透视表使用sync命令时导致错误。如何使选择框返回空白数组''而不是null?
{!! Form::select('tag_list[]', $tags, '', array('class' => 'select2 form-control', 'multiple')) !!}
我能够解决问题的唯一方法是在同步之前检查null,即
private function syncTags(Company $company, $tags)
{
if (is_null($tags)) {
$tags = [];
}
$company->tags()->sync($tags);
}
答案 0 :(得分:1)
如果未选择任何内容,则Laravel确实返回null。手动空值检查是重新调整案例的一种方法,就像您已经完成的那样。
另一种选择是选择"某些东西"默认情况下,如果用户没有选择它,但这是一个丑陋的黑客。我用隐藏的输入做了它,它具有相同的名称。一个将覆盖其他,如果没有选择任何内容,则将使用隐藏的输入值。
答案 1 :(得分:0)
到目前为止,这是最好的解决方案(仍然有点难看!)
$tags = $request->input('tag_list', []);
$company->tags()->sync($tags);