J'ai eu cette erreur
L'argument 1 passé à Illuminate\Database\Grammar :: parameterize () doit être du type tableau, chaîne donnée,
quand j'ai essayé d'ajouter array[]
dans ma vue à l'aide du formulaire choisi. Mais quand je l'ai enlevé, je n'ai pas eu d'erreur. J'essaie simplement de saisir une valeur multiple dans ma liste de sélection. Dois-je utiliser foreach
pour cela?
Vue
<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>
Manette
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);
}
Mettre à jour
Je meurs et vider la variable $approver
et donne un tableau de valeur.
Aussi mourir et vider le $request
Comme vous pouvez le voir ici, j'ai entré l'id de 4 et 5 dans ma liste de sélection.
Ok, votre problème est que vous essayez de sauvegarder un tableau en tant que valeur singulière sur laquelle vous devez effectuer une itération sur les approbateurs.
Changez la logique de votre contrôleur en ceci:
foreach ($request->approver as $approver) {
$approve = new Approve();
$approve->approver_id = $approver;
$approve->save();
$document->sentToApprovers()->sync([$approve->id],false);
}
Dans mon cas, je ne mentionne pas le nom dans: -
$request->input();
donc je viens de changer avec
$request->input("name");
alors ses œuvres