我在从表单中的多选项目中获取数据透视表时遇到问题。
表格
<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 替换是一个数组
答案 0 :(得分:0)
此错误是由Laravel尝试将资源数组放入现有字段而不是更新数据透视表引起的。我已经从传递给任务模型的输入中删除了资源数组,它可以工作。