【发布时间】:2019-09-09 17:47:40
【问题描述】:
我收到了这个错误
传递给 Illuminate\Database\Grammar::parameterize() 的参数 1 必须是数组类型,给定字符串,
当我尝试使用选择表单在我的视图中添加 array[] 时。但是当我删除它时,我没有收到任何错误。我只是想在我的选择列表中输入多个值。我需要为此使用foreach 吗?
查看
<div class = "form-group {{ $errors->has('approver') ? ' has-error' : '' }}">
<label for = "approver" class = "control-label">Approver:</label>
<select name = "approver[]" multiple class = "form-control select2-multi">
@foreach ($approver as $list)
<option value = "{{ $list->id }}">{{ $list->username }}</option>
@endforeach
</select>
@if ($errors->has('approver'))
<span class = "help-block">{{ $errors->first('approver') }}</span>
@endif
</div>
控制器
public function getDocuments()
{
$approver = DB::table('users')->where('id', '!=', Auth::id())->get();
return view ('document.create')->with('approver', $approver);
}
public function postDocuments(Request $request)
{
$this->validate($request,
[
'title' => 'required|regex:/(^[A-Za-z0-9 ]+$)+/|max:255',
'content' => 'required',
'category' => 'required',
'recipient' => 'required',
'approver' => 'required',
]);
$document = new Document();
$approve = new Approve();
$user = Auth::user();
//Request in the form
$document->title = $request->title;
$document->content = $request->content;
$document->category_id = $request->category;
$approve->approver_id = $request->approver;
$approve->save();
$document->save();
$document->sentToApprovers()->sync([$approve->id],false);
}
更新
我死了并转储了$approver 变量并给出了一个值数组。
也死掉并转储$request 正如您在此处看到的,我在选择列表中输入了 4 和 5 的 id。
【问题讨论】:
-
请在视图中显示您的 foreach 中
$approver的值。 -
@JaredEitnier 我更新了我的帖子。
$approver是一个变量,我将其传递到我的视图中,请参阅。 -
好的,问题是在您的视图中出现还是在您尝试保存模型时出现?
-
@JaredEitnier 是的,当我在选择表单中添加
[]时,确实会发生此问题。 -
$approver的实际数据转储 (dd) 是什么?我怀疑那里出了问题,因为我无法使用您的代码在本地重现此问题。
标签: php laravel laravel-5.2