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');
}
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';
Vous pouvez tous remplir une colonne:
protected $guarded = array();
Ajoutez votre modèle.
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.
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.
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.
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;