web-dev-qa-db-fra.com

Laravel 5: MassAssignmentException dans Model.php

Je reçois cette erreur: 

MassAssignmentException dans Model.php, ligne 448: _token

Quand j'utilise la méthode create. Veuillez revoir le code ci-dessous:

Contacts.php (Modèle):

class Contacts extends Model
{
    protected $table = ['name', 'mobile', 'email', 'address', 'created_at', 'updated_at'];
}

ContactsController.php (Contrôleur):

public function store(Request $request)
{        
    $inputs = $request->all();
    $contacts = Contacts::Create($inputs);
    return redirect()->route('contacts.index');
}
21
Sandeep

Pour l'exception Mass Assignment Exception : vous devez spécifier tous les champs du modèle que vous souhaitez attribuer en masse via des opérations de création ou de mise à jour sur la propriété $fillable

protected $fillable = ['name', 'mobile', 'email', 'address', 'created_at', 'updated_at'];

De plus, le champ $table doit contenir uniquement le nom de la table du modèle: 

protected $table = 'your_table_name';
83
Moppo

Vous pouvez tous remplir une colonne:

protected $guarded = array();

Ajoutez votre modèle.

4
Ferhat KOÇER

Cela peut arriver si vous avez utilisé la classe importée à tort. si vous utilisez le modèle d'utilisateur.

Mauvaise importation 

// mostly IDE suggestion
use Illuminate\Foundation\Auth\User;

Import du modèle correct

use App\User;

j'ai traversé ça. pourrait aider quelqu'un.

3
shakee93

Si tout ce qui précède échoue, vous pouvez essayer de suivre. 

Mettez ce qui suit après l'espace de noms.

use Eloquent;

Mettez ce qui suit au début de votre méthode store.

Eloquent::unguard();

comme: 

public function store(Request $request)
{        
   Eloquent::unguard();
   $inputs = $request->all();
   $contacts = Contacts::Create($inputs);
   return redirect()->route('contacts.index');
}

Ceci n'est toutefois pas recommandé, car cela rend les choses vulnérables aux attaques. Mais si vous avez besoin d'une solution rapide, cela pourrait aider. 

0
Joynal Abedin

Assurez-vous de placer les éléments $ fillable ou $ guarded dans le fichier app\Contacts.php et non le fichier app\Http\Controllers\ContactsController.php. Cela devrait être évident, mais on peut l'ignorer.

0
Keith Turkowski

Vérifiez le modèle que vous avez importé ou non. Sinon, utilisez ceci.

<?php 

 namespace App\Http\Controllers\Auth; 
 use App\Http\Controllers\Controller; 
 use App\User;
0
Rahul Hirve