O erro “General error: 1364 Field ‘name’ doesn’t have a default value” acontece pelo fato de o Laravel não conseguir fazer a atualização (updade) na tabela “user”.
Para solução do General error: 1364, precisaremos enviar o dado faltante, no caso em tela, a coluna “name” esta vazia e por isso o MYSQL devolveu o erro Field ‘name’ doesn’t have a default value.
Verificação de email com Laravel Sanctum – erro 1364
Crie o arquivo EmailVerificationController.php
\app\Http\Controllers\Api\EmailVerificationController.php
Agora coloque o script PHP abaixo dentro do arquivo EmailVerificationController.php
Perceba que o nosso usuário é vindo de $this->user = auth(‘sanctum’)->user(), ou seja, pegamos a autenticação ocorrida via api sanctum
Definição da rota para disparo da mensagem de autenticação
Em seu arquivo api.php, vamos acrescentar a linha
Route::get('email/verification-notification', 'App\Http\Controllers\Api\EmailVerificationController@sendVerificationEmail');
Agora vamos automatizar o envio da mensagem via e-mail para a conta que você deseja. Abra o seu Laravel arquivo \app\Providers\AuthServiceProvider.php e dentro dele, coloque o código abaixo.
Criando o VerifyEmail Service Provider
\app\Providers\AuthServiceProvider.php
Perceba a função “public function boot()”, nela acrescentamos algumas linhas, as quais são exatamente os comandos para a composição do corpo do e-mail que conterá o link para verificação do e-mail.
Definição de rota de autenticação do e-mail route::get
Em seu arquivo api.php, vamos acrescentar a linha
Aqui tem uma observação importante, pois, como você pretende validar o e-mail, é extremamente importante que o usuário esteja “logado” e para isso, vamos utilizar o middleware para garantir.
Como no nosso caso, estamos falando de autenticação de usuário via api, por isso o “Route::middleware(‘auth:sanctum’)“
// \routes\api.php
Route::middleware('auth:sanctum')->get('verify-email/{id}/{hash}', 'App\Http\Controllers\Api\EmailVerificationController@verify')->name('verification.verify');
Tudo Pronto
Feito essas configurações acima, o erro “General error: 1364 Field ‘name’ doesn’t have a default value Laravel Sanctum” será resolvido!!