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, email, 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.

0
Mox 15 dic. 2019 a las 20:45

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} }

2
lagbox 15 dic. 2019 a las 17:46

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,
]
1
mare96 15 dic. 2019 a las 17:52