2017-10-19 3 views
0

Peut-être est une question idiote mais j'ai un problème avec mon formulaire d'inscription. J'ai ajouté un champ d'addition à enregistrer dans la table de base de données users mais cette valeur textarea supplémentaire n'est pas sauvegardée.Le formulaire d'enregistrement ne sauvegarde pas le champ d'addition dans la base de données avec Laravel

Toutes les autres entrées telles que le nom d'utilisateur et le mot de passe sont enregistrées correctement. Ceci est l'ajout textarea

<div class="form-group"> 
     <label class="col-md-4 control-label">Bio</label> 
     <div class="col-md-6">         
      <textarea class="form-control" name="bio" id="bio" rows="5"></textarea> 
     </div> 
</div> 

Et la fonction magasin AuthController.php

protected function create(array $data) 
{ 
    //dd($data); 
    return User::create([ 
     'name' => $data['name'], 
     'password' => bcrypt($data['password']), 
     'bio' => $data['bio'], 
    ]); 
} 

Quand je vois dd($data) je que les données de $ contiennent la valeur Bio. Colonne bio est avec le type text dans la base de données donc, n'est pas tronqué ou quelque chose.

Quel peut être le problème?

+1

Avez-vous ajouté de la bio à votre tableau remplissable dans le modèle utilisateur? – pseudoanime

Répondre

1

Il s'agit d'un problème Mass Assignment.

Dans votre modèle User, vous aurez un tableau défini comme public $fillable = [...];

Vous devrez ajouter 'bio' au tableau pour lui permettre de travailler de la fonction User::create([]);

+0

Oh, je ne le savais pas vraiment. Je suis un peu nouveau à Laravel. Pourquoi je ne peux pas les ajouter tout de suite mais que j'ai besoin de les ajouter en remplissage? – Peter

+0

Oh, je comprends maintenant des docs. C'est pour des raisons de sécurité – Peter

+0

Ouais. Cela restreint ce qui peut être entré. – mbozwood

1

I votre modèle ajouter le bio dans remplissable protégé. Comme celui-ci.

protected $fillable = ['name','email','password','bio'];