【问题标题】:Unable to save select box options in Laravel 5.1无法在 Laravel 5.1 中保存选择框选项
【发布时间】: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_parentfemale_ parent 两列中。

表单中没有 male_parentfemale_ 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


【解决方案1】:

然后通过更改 UI 解决了问题。我觉得问题可以使用以下方法解决。希望对某人有所帮助。

 $input = $request->all();
    $parent = $input['animal_parent'];

    $input['male_parent'] = intval($parent[0]);
    if (isset($parent[1])) {
        $input['female_parent'] = intval($parent[1]);
    } else {
        $input['female_parent'] = intval($parent[0]);
    } 

    unset($input['animal_parent']);
    $animal = new Animal($input);
    $animal->save();`  

【讨论】:

    猜你喜欢
    • 2018-10-28
    • 2015-10-02
    • 1970-01-01
    • 2021-12-06
    • 2017-06-19
    • 1970-01-01
    • 2021-07-19
    • 2016-09-27
    • 1970-01-01
    相关资源
    最近更新 更多