Grammaire::paramétrer() doit être de type tableau
J'ai eu cette erreur
Argument 1 passé pour Éclairer\Database\Grammaire::paramétrer() doit être de type array, string donné,
quand j'ai essayé d'ajouter array[]
de mon point de Vue à l'aide de sélectionner le formulaire. Mais quand je l'ai enlevé je n'ai pas d'erreur. J'essaye juste à l'entrée d'un multiple de la valeur 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>
Contrôleur
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);
}
Mise à jour
Je mourrai, et le vidage de l' $approver
variable et donne un tableau de valeur.
Mourir aussi et vidage de la $request
Comme vous pouvez le voir ici, j'ai d'entrée de l'id de 4 et 5 dans ma liste de sélection.
S'il vous plaît montrer la valeur de
J'ai mis à jour mon post.
Ok, donc c'est la question qui se produisent dans votre vue ou lorsque vous essayez d'enregistrer vos modèles?
Oui exactement ce problème est survenu lorsque j'ai ajouté un
Qu'est-ce que les données réelles de vidage (
$approver
de votre foreach dans la vue.J'ai mis à jour mon post.
$approver
est une variable où j'ai passé en mon avis, consultez.Ok, donc c'est la question qui se produisent dans votre vue ou lorsque vous essayez d'enregistrer vos modèles?
Oui exactement ce problème est survenu lorsque j'ai ajouté un
[]
dans mon sélectionnez le formulaire.Qu'est-ce que les données réelles de vidage (
dd
) de $approver
? Je soupçonne que quelque chose se passe mal il que je ne peux pas reproduire ce problème localement, à l'aide de votre code.OriginalL'auteur Francisunoxx | 2016-08-15
Vous devez vous connecter pour publier un commentaire.
Ok, votre problème est que vous essayez d'enregistrer un tableau comme une valeur singulière où vous en avez besoin pour effectuer une itération sur les approbateurs à la place.
Changer votre contrôleur logique à cela:
4
et5
mais5
a seulement été inséré.Bien sûr, alors il vous suffit d'instancier un nouveau
Approve
modèle à l'intérieur de la boucle, puis, au lieu de l'extérieur.Merci pour la résolution de mon problème. Pourquoi Il est toujours le dernier sélectionné? Pourquoi dois-je créer une nouvelle instance?
Regardez votre code d'origine. Vous avez seulement déclarer au lieu de
Approve
. Ensuite, vous itérer sur tous les$request->approver
s et enregistrer laApprove
modèle de chaque itération. La valeur deapprover_id
est écrasé à chaque fois sur le modèle d'origine, à moins de créer un nouveau modèle.Oh je vois que vous avez inclus dans une boucle foreach 🙂
OriginalL'auteur Jared Eitnier
Dans mon cas, je ne mentionner que le nom :-
donc je viens de changer avec
puis ses œuvres
OriginalL'auteur Krishna Kumar Jangid