Grammar :: parameterize() должен быть из массива типов
Я получил эту ошибку
Аргумент 1, передаваемый в Illuminate\Database\Grammar :: parameterize(), должен иметь тип массива, заданная строка,
когда я попытался добавить 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 4 и 5 в мой список выбора.
Ответы
Ответ 1
Хорошо, ваша проблема заключается в том, что вы пытаетесь сохранить массив как единственное значение, в котором вам нужно вместо этого использовать итерацию.
Измените логику контроллера следующим образом:
foreach ($request->approver as $approver) {
$approve = new Approve();
$approve->approver_id = $approver;
$approve->save();
$document->sentToApprovers()->sync([$approve->id],false);
}
Ответ 2
В моем случае я не упоминаю имя в: -
$request->input();
так что я просто изменяюсь с
$request->input("name");
тогда его работы
Ответ 3
Я получаю ту же ошибку при отправке писем в laravel. Письма отправляются, но после этого страница выдает ту же ошибку. В чем может быть возможная проблема?
Ответ 4
В моем случае я хотел вставить объемные данные, поэтому я получил ошибку.
Тогда я использовал
User::insert($arrayData)
и я готов.
Ответ 5
Я получил эту ошибку, потому что я переписал конструктор в модели. Если вы это сделаете, обязательно передайте массив arguments:
public function __construct(array $attributes = [], $something_else)
{
parent::__construct($attributes);
//...
$this->something_else = $something_else;
}