Factory - Tests User_id Sanctum
[Concluído]
Olá Professor, boa tarde!
Tudo bem?
Poderia me ajudar por favor?.
Estou em um novo projeto, e quero dessa vez automatizar os meus testes a cada nova rota de api criada, portanto nesse projeto estou usando Sanctum para autenticação e geração do Token conforme suas aulas anteriores, contudo por algum motivo ao passar o model para o factory e usar o seed ou o unitytest, ambos não conseguem encontrar o USER_ID.
Ele informa que estou inserindo NULO no campo, certo, portanto como faço para pegar esse id de usuário já que não vou logar ou autenticar?.
ERRO
cannot insert NULL into ("GATEWAY_WEB"."COMPANIES"."USER_ID")
Position : 135
Statement : insert into "COMPANIES" ("NAME", "CNPJ", "ADDRESS", "DESCRIPTION", "USER_ID", "UPDATED_AT", "CREATED_AT")
Migration:
Classe Factory:
Seeder
Olá, Jean!
Tudo bem?
Ajudo sim, claro.
Como a coluna user_id não é um valor null:
$table->string('user_id', 128)->nullable();
Precisa gerar um User para relacionar essa factory:
'user_id' => User::factory(),
https://github.com/especializati/curso-laravel-9-dashboard-ead/blob/main/database/factories/LessonFactory.php#L25
Pegou a ideia?
Olá professor, bom dia!
Deu certo, obrigado.
Vlwww.
Professor, boa tarde!
Uma outra dúvida, têm alguma forma mais fácil no laravel de que toda vez quando algum usuário atualizar, deletar, atualize o user_id?.
Ex:
Tenho uma tabela de VehicleTypes, aonde tenho um user_id, ao inserir um novo dado, o laravel através do sanctum, consegue pegar o id autenticado, portanto quando vou fazer um update nesse mesmo dado, com outro user, ele não atualiza, para efetuar essa proeza, tive que realizar da seguinte maneira, pegando o auth autenticado, jogando para o resource, no vuejs pego o data e coloco no input com hidden e passo no v-model o user_id e salvo, funciona, portanto gostaria de verificar outros jeitos, se possivel, grato.
VehicleTypeController
Laravel em VehicleTypeResource
UpdateVehicleTypeRequest
Model VehichleType
VUEJS
Olá, Jean!
Tudo bem?
Esse user_id vem do seu client?
Esse valor pode ser "falso"
Ainda que você valide que seja um valor que realmente exista no banco, ainda pode ser um usuário se passando por outro:
'user_id' => ['required', 'max:128', 'exists:users,id']
Por que não consegue pegar do usuário autenticado?
Porque se essa operação foi a partir de algum usuário identificado (tem o user_id) é porque esse usuário está autenticado de alguma forma.
Perfeito, grato.
Precisa estar logado para conseguir responder a este ticket!
Clique Aqui Para Entrar!