Bien, he estado recibiendo este error por algún tiempo:
Iluminar \ Base de datos \ Excepción de consulta SQLSTATE [HY000]: Error general: 1364 El campo 'nombre de usuario' no tiene un valor predeterminado (SQL: insertar en
users
(name
,updated_at
, { {X4}}) valores (ggg, things@see.com, 2019-12-15 16:58:26, 2019-12-15 16:58:26))
No quiero establecer el nombre de usuario en nullable
, ya que necesito tenerlo. Así es como se ve la tabla:
mysql> desc users;
+-------------------+---------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------------+---------------------+------+-----+---------+----------------+
| id | bigint(20) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(255) | NO | | NULL | |
| email | varchar(255) | NO | UNI | NULL | |
| username | varchar(255) | NO | UNI | NULL | |
| email_verified_at | timestamp | YES | | NULL | |
| password | varchar(255) | NO | | NULL | |
| remember_token | varchar(100) | YES | | NULL | |
| created_at | timestamp | YES | | NULL | |
| updated_at | timestamp | YES | | NULL | |
+-------------------+---------------------+------+-----+---------+----------------+
9 rows in set (0.00 sec)
Así es como se ve el método de creación:
protected function create(array $data)
{
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
'username' => $data['username'],
]);
}
Ahí es donde obtengo el error.
EDITAR: Bien, entonces lo arreglé moviendo el atributo 'username'
a la matriz $fillable
. También copié la clase original App/User
que proporciona Laravel y le agregué mis métodos.
2 respuestas
Asegúrese de haber agregado el campo username
a $fillable
en el modelo:
protected $fillable = [
...
'username',
];
Laravel 6.x Docs - Eloquent - Mass Assignment {{X0} }
Probablemente te pierdas algo de esto:
- Verifique su migración y vea si tiene
nullable()
para esa columna - Como mencionó @lagbox, verifique sus campos
$fillable
Si el error persiste, puede intentar editar en config/databse.php
:
'mysql' => [
...
'strict' => false,
]
Preguntas relacionadas
Nuevas preguntas
php
PHP es un lenguaje de secuencias de comandos interpretado, dinámico, orientado a objetos y ampliamente utilizado, diseñado principalmente para el desarrollo web del lado del servidor. Se utiliza para preguntas sobre el lenguaje PHP.