General error: 1364 Field ‘name’ doesn’t have a default value Laravel Sanctum

General error: 1364 Field 'name' doesn't have a default value Laravel Sanctum

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