【问题标题】:Update Laravel4 pivot table from multiselect从多选更新 Laravel4 数据透视表
【发布时间】:2015-04-13 22:28:30
【问题描述】:

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

表格

<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.');
    }

表单可以很好地自动填充。一旦提交,这就是 resources[]

的值

["2","3"]

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

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

【问题讨论】:

    标签: laravel-4


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2013-10-05
      • 2013-03-15
      • 2015-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-09
      相关资源
      最近更新 更多