[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
pabloweslly
Criador pabloweslly 11/03/2021

Criei dois models o role e user.  No model role vai ficar no banco de dados citando as funções como admin, suporte e entre outros.  E o model user com os dados dos usuários e nele eu fiz o relacionamento com a tabela role através da coluna  id no id_role da model user

 

Ao gerar db:seed dá esse erro.

 

SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`laravel`.`users`, CONSTRAINT `users_role_id_foreign` FOREIGN KEY (`role_id`) REFERENCES `roles` (`id`)) (SQL: insert into `users` (`role_id`, `name`, `lastname`, `email`, `email_verified_at`, `password`, `cpf`, `cnpj`, `id_category`, `id_address`, `id_phone`, `genere`, `remember_token`, `updated_at`, `created_at`) values (2, Dr. Ronaldo Leandro Solano Jr., Espinoza, [email protected], 2021-03-11 22:59:32, $2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi, 15521408495, 47112236000183, 2, 3, 5, masculino, JiU8YmcCir, 2021-03-11 22:59:32, 2021-03-11 22:59:32))

 

 

 

Manager Carlos Ferreira 11/03/2021

Olá, Pablo!
Tudo bem?

Você tem o projeto no GitHub?
Preciso ver com detalhes para conseguir te ajudar.

No aguardo amigo.

Carlos Ferreira
Criador pabloweslly 11/03/2021

Conseguir resolver o problema.

 

Solução:

Estava  querendo gerar apenas o usuários pelo faker/seed/factory, contudo, tenho a coluna roles, só que não coloquei para gerar automático os dados para ele, estava colocando  manualmente, que era as seguintes informações o id-1->admin, id->2->suporte. O que acontece quando gerava os usuários, se visualizar coloquei para randomizar os 1 e 2 no role_id, quer dizer, a cada usário criado ele iria adicionar 1 ou 2, o que acontece que role_id é um chave estrangeria com id da tabela role, toda vez que gerava o usuário e não encontrada nada no banco de dados dava esse erro, pois eu esquece de adicionar os dados no banco dados da tabela role.

 

Se eu tiver, admin, suporte, gerente e secretaria, ai já tenho 4 funções, se cadastrar no banco de dados seria id de 1 a 4 se fosse cadastro inserido pela primeira vez. Portanto, cada função era um ID então se quiser randomizar, eu tenho que colocar role_id do 1 até 4 que a quantidade de funções você tem cadastrada no banco para ele randomizar de acordo com quantidade de usuários que você quer,  ai automaticamente ele iria colocar função aleatória para cada usuário criado.

return [
'role_id' => $this->faker->numberBetween(1,2), // Aqui tenho que colocar nunmero de acordo que cadastrei no banco porque não estou gerando role no faker e assim adicionando manualmente
'name' => $this->faker->name,
'lastname' => $this->faker->lastname,
'email' => $this->faker->unique()->safeEmail,
'email_verified_at' => now(),
'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password
'cpf' => $this->faker->unique()->cpf(false),
'cnpj' => $this->faker->unique()->cnpj(false),
'id_category' => $this->faker->numberBetween(1,5),
'id_address' => $this->faker->numberBetween(1,5),
'id_phone' => $this->faker->numberBetween(1,5),
'genere' => $this->faker->randomElement($this->genero),
'remember_token' => Str::random(10),
];
pabloweslly
Manager Carlos Ferreira 11/03/2021

Parabéns!

Carlos Ferreira
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!