Estou usando DB::seed da versão 8 estou com problema foreign key
[Concluído]
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))
Olá, Pablo!
Tudo bem?
Você tem o projeto no GitHub?
Preciso ver com detalhes para conseguir te ajudar.
No aguardo amigo.
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),
];
Parabéns!
Precisa estar logado para conseguir responder a este ticket!
Clique Aqui Para Entrar!