Php 尝试注册并将电子邮件发送到mailtrap.io时出错
我在尝试注册时遇到此错误 SQLSTATE[23000]:完整性约束冲突:19非空约束失败:users.username(SQL:插入“users”(“name”、“email”、“password”、“updated_at”、“created_at”)值(ddd,User@gmail.com,$2y$10$OAVW3PgwJ3tfqvCIGLOSM.mlOELN2sI72Um74Asn5vYhVqbg7x2SW,2020-04-06 08:40:58,2020-04-06 08:40:58) php具有以下特性:Php 尝试注册并将电子邮件发送到mailtrap.io时出错,php,laravel,sqlite,Php,Laravel,Sqlite,我在尝试注册时遇到此错误 SQLSTATE[23000]:完整性约束冲突:19非空约束失败:users.username(SQL:插入“users”(“name”、“email”、“password”、“updated_at”、“created_at”)值(ddd,User@gmail.com,$2y$10$OAVW3PgwJ3tfqvCIGLOSM.mlOELN2sI72Um74Asn5vYhVqbg7x2SW,2020-04-06 08:40:58,2020-04-06 08:40:58)
Mail::to($user->email)->send(new NewUserWelcomeMail());
为什么呢?我在用户创建表中的电子邮件是
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->string('username')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
请帮我解决这个问题。问题不在于邮件陷阱,而在于用户名列,在RegisterController中插入时向用户名列添加值 只需在
RegisterController.php
中进行以下代码更改,即可在users
表中添加用户名值
protected function create(array $data)
{
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'username' => $data['email'] // Or add logic to generate unique Username
'password' => Hash::make($data['password']),
]);
}
这应该可以解决问题。您的表中有一个名为
username
的列,该列不允许null
值,并且似乎没有任何默认值。插入新记录时,需要为该列指定唯一值。如果没有,它将尝试插入null
,但它无法插入。因此,您的问题是用户名
列,而不是电子邮件
列。在我更改.env文件之前,它工作得很好。邮件部分用户名和密码来自mailtrap.ioWell,您收到的错误是因为您忽略了为用户名
列添加值。看看如何创建用户表,该字段不可为null,因此必须传入一个非null且唯一的值。它是否“以前工作过”并不重要。错误信息很清楚。添加没有任何用户名的用户也没有多大意义。