猿问

我在 Laravel 上收到“一般错误:1364”,说我没有用户名的默认值,有人可以帮助我吗?

是的,所以我已经收到这个错误一段时间了:


Illuminate\Database\QueryException SQLSTATE[HY000]:一般错误:1364 字段“用户名”没有默认值(SQL:插入users(name、、、、)值(ggg email,things@see.com,2019-12-15 2019-12-15 16:58:26 16:58:26))updated_atcreated_at


我不想将用户名设置为nullable,因为我需要它。这是表格的样子:


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)

这是 create 方法的样子:


     protected function create(array $data)

    {

        return User::create([

            'name' => $data['name'],

            'email' => $data['email'],

            'password' => Hash::make($data['password']),

            'username' => $data['username'],

        ]);

    }

这就是我得到错误的地方。


编辑: 好的,所以我通过将'username'属性移动到$fillable数组中来修复它。我还复制了 Laravel 提供的原始App/User类,并在其中添加了我的方法。


跃然一笑
浏览 175回答 2
2回答

蛊毒传说

确保您已将字段添加username到$fillable模型上:protected $fillable = [    ...    'username',];Laravel 6.x 文档 - Eloquent - 批量分配 $fillable

汪汪一只猫

你可能错过了一些东西:检查您的迁移,看看您是否有nullable()该列正如@lagbox 提到的,检查你的$fillable字段如果错误仍然存在,您可以尝试编辑config/databse.php:'mysql' => [     ...     'strict' => false,]
随时随地看视频慕课网APP
我要回答