web-dev-qa-db-fra.com

Grammar :: parameterize () doit être du type array

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.

 SC

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. 

 SC

6
Francisunoxx

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);
}
7
Jared Eitnier

Dans mon cas, je ne mentionne pas le nom dans: -

$request->input();

donc je viens de changer avec

$request->input("name");

alors ses œuvres 

0