【发布时间】:2016-06-10 13:14:14
【问题描述】:
我正在使用 Laravel 5.1 进行我的第一个项目。在表单中使用选择框。
{!!Form::select('animal_parent[]', array('1' => 'opt1', '2' => 'opt2', '3' => 'opt3', '4' => 'opt4',), null, ['id' => 'animal_parent', 'disabled' => 'disabled', 'multiple' => 'multiple', 'class' => 'form-control'])!!}
选择仅限于两个选项,需要保存在animal 表的male_parent 和female_ parent 两列中。
表单中没有 male_parent 和 female_ parent 元素名称。同样,animal 表中也没有 animal_parent 字段。
值在下面给出的代码中按预期设置。但是,插入命令不反映新设置的值并引发错误。
“helpers.php 第 671 行出现错误异常:preg_replace(): 参数不匹配,模式是字符串,而替换是数组。”
任何帮助将不胜感激。
第一次尝试使用 mutators
public function setMaleParentAttribute()
{
$parent = Input::get('animal_parent');
$this->attributes['male_parent'] = intval($parent[0]);
}
public function setFemaleParentAttribute(AddAnimalRequest $request)
{
$parent = Input::get('animal_parent);
if (isset($parent[1])) {
$this->attributes['female_parent'] = intval($parent[1]);
} else {
$this->attributes['female_parent'] = intval($parent[0]);
}
unset($request->animal_parent);
}
第二次尝试在控制器中使用store() 方法。
$animal = new Animal($request->all());
$parent = Input::get('animal_parent');
$animal['male_parent'] = intval($parent[0]);
if (isset($parent[1])) {
$animal['female_parent'] = intval($parent[1]);
} else {
$animal['female_parent'] = intval($parent[0]);
}
unset($request->animal_parent);
Auth::user()->animals()->save($animal);
return redirect('animals');
【问题讨论】:
-
通过更改 UI 解决了问题。
标签: php mysql drop-down-menu eloquent laravel-5.1