我试图建立我的自定义用户验证系统,基本上我在laravel用户模型中添加了一个ConfirmationKey字段,我更改了注册方法以在创建用户时添加ConfirmationKey。问题是由于某种原因未添加该值,并且出现以下错误:
SQLSTATE[HY000]: General error: 1364 Field 'confirmationKey' doesn't have a default value (SQL: insert into `users` (`name`, `email`, `password`, `updated_at`, `created_at`) values (igyguiiuiug, iyhihbiuibi@gmail.com, $2y$10$HlQbAOyhSCuif5exWZdz/.pCcXAmkWqCdXirNwvY.9/KPDtI5X14S, 2019-04-10 13:26:17, 2019-04-10 13:26:17))
这很奇怪,正如我在RegisterContoller的create方法中所看到的那样,我已将confirmationKey添加到create方法中:
//RegisterController
protected function create(array $data)
{
$confirmationKey = Str::random(32);
//var_dump('confirmationKey: '.$confirmationKey);
$mailData = [
'confirmationKey' => $confirmationKey,
'sender' => env('MAIL_FROM'),
'subject' => 'Confirmación de registro en '.env('APP_NAME'),
];
$user = User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
'confirmationKey' => $confirmationKey
]);
Mail::to( $data['email'] )->send(new UserMail1($mailData));
return $user;
}
当我执行var_dump时,我可以清楚地看到confrmationKey存在并且是字符串。
我的代码有什么问题?
答案 0 :(得分:0)
您需要在可填充数组中设置conformationKey
您还可以使用create方法将新模型保存在一行中。插入的模型实例将从该方法返回给您。但是,在执行此操作之前,您将需要在模型上指定可填充或受保护的属性,因为默认情况下,所有Eloquent模型都可以防止大规模分配。
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Flight extends Model
{
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = ['name'];
}
请参阅:mass-assignment