从multiselect更新Laravel4数据透视表

时间:2015-04-13 13:52:15

标签: laravel-4

我在从表单中的多选项目中获取数据透视表时遇到问题。

表格

<div class="form-group">
            {{ Form::label('resources[]', 'Resources:', array('class'=>'col-md-2 control-label')) }}
            <div class="col-sm-10">
            {{ Form::select('resources[]', $allr, $task->resources->lists('id','title'), array('multiple')) }}
            </div>
        </div>

控制器

public function update($id)
    {
        $input = array_except(Input::all(), '_method');
        $validation = Validator::make($input, Task::$rules);
        //return $input;
        if ($validation->passes())
        {
            $task = $this->task->find($id);
            $task->update($input);
            $task->resources()->sync(array(1,2,3));

            return Redirect::route('tasks.index');
        }

        return Redirect::route('tasks.edit', $id)
            ->withInput()
            ->withErrors($validation)
            ->with('message', 'There were validation errors.');
    }

表格自动填充。提交后,这是资源[]

的价值

[ “2”, “3”]

我得到的错误是......

  

preg_replace():参数不匹配,pattern是一个字符串while   替换是一个数组

1 个答案:

答案 0 :(得分:0)

此错误是由Laravel尝试将资源数组放入现有字段而不是更新数据透视表引起的。我已经从传递给任务模型的输入中删除了资源数组,它可以工作。