语法::参数()必须是类型阵列
我得到这个错误语法::参数()必须是类型阵列
参数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
正如你可以在这里看到我输入的和我在选择列表中的ID。
好吧,你的问题是,你要保存的数组,你需要遍历的审批,而不是一个奇异值。
各地更改您的控制器逻辑是:
foreach ($request->approver as $approver) {
$approve = new Approve();
$approve->approver_id = $approver;
$approve->save();
$document->sentToApprovers()->sync([$approve->id],false);
}
这起作用。但是当我试图从选择表单插入两个值时,我遇到了一个问题。它只插入最后选择的?我做了什么,我选择了'4'和'5',但是'5'只被插入。 – Francisunoxx
当然,所以只需在循环内部实例化一个新的'Approve'模型,而不是在外部。 –
感谢您解决我的问题。为什么它总是得到最后的选择?为什么我需要创建一个新的实例? – Francisunoxx
请从您的视图显示的foreach的'$ approver'值。 –
@JaredEitnier我更新了我的帖子。 '$ approver'是一个变量,我将它传递给我的视图请看。 – Francisunoxx
好的,您的观点或您尝试保存模型时发生的问题也是如此? –