$table->foreignUuid()->nullable();
Oi mestre tudo bem?
Estou inserindo uuid em minhas tabelas e me deparei com uma situação em que uma foreignUuid pode ser nula em meu projeto
Conforme exemplo abaixo:
Schema::create('users', function (Blueprint $table) {
$table->uuid('id')->primary();
$table->string('name');
$table->uuid('plan_id')->nullable();
});
mas quando eu uso a factory, apresenta um erro que não acha a coluna uuid. Conforme abaixo
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'uuid' in 'field list' (SQL: insert into `users` (`name`, `email`, `email_verified_at`, `password`, `remember_token`, `id`, `uuid`, `updated_at`, `created_at`) values (Miss Shanie Bauch, [email protected], 2022-06-07 18:12:20, $2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi, Dt60RsUxCh, a5310f13-6d0d-4f36-89f6-de73db4e44f1, 69ddd717-8db3-480b-9cd2-564563bf3704, 2022-06-07 18:12:20, 2022-06-07 18:12:20))
pode me ajudar resolver esse problema. obrigado
Olá, Igor!
Tudo bem?
Tem o projeto no GitHub?
Porque aqui está correto:
$table->uuid('plan_id')->nullable();
Mas, o erro está na coluna UUID, que nem existe nessa tabela.
Mestre o repositório é privado, mas coloquei vc como colaborador. Veja se consegue acesso.
Usei sua conta carlosfgti
Isso daqui está correto:
$table->uuid('plan_id')->index()->nullable();
Veja esse exemplo de FK, aqui: https://github.com/especializati/curso-laravel-9-dashboard-ead/blob/main/database/migrations/2022_03_17_203139_create_reply_supports_table.php
--
Faz um reset do banco:
php artisan migrate:fresh
Mestre, eu já tinha tentado usar o ->index(), mas não da certo tb. Sempre fica tentando inserir na coluna uuid, que não existe, em vez de inserir um valor null na coluna plan_id
Olá, Igor!
Tudo bem?
Reservei um tempinho agora, e rodei o seu projeto.
Veja, nenhum erro: https://prnt.sc/wihylrzLwYnz
Experimenta com o comando php artisan migrate:fresh
Oi Mestre,
O problema não está na hora de criar as tabelas e sim na hora de povoar com os dados fakes usando a factory. Veja a imagem abaixo
https://prnt.sc/RO8lBF9wTQVH
Ah sim, achei que era nas migrations
Rodei o seu projeto novamente, e encontrei os erros.
Primeiro, no atributo keyType do model, não existe esse tipo uuid no PHP, ele entende como string.
Faltou o cast de id também:
protected $casts = [
'email_verified_at' => 'datetime',
'id' => 'string',
];
E você tem um Observer (UserObserver), tentando inserir uma coluna uuid, que nem existe, pode deixar assim, ou usar aquela trait do model:
$user->id = (string) Str::uuid();
Putz eu tinha esquecido que tinha criado um Observer que inseria o uuid por lá! Era por isso que não estava funcionando! Agora ficou top!
So não entendi a questão do KeyType não ser do tipo uuid, sendo que está assim no seu programa e no vídeo tb
Mals Igor, é que fui debugando sua aplicação e escrevendo o ticket.
O problema era realmente apenas no Observer;
Precisa estar logado para conseguir responder a este ticket!
Clique Aqui Para Entrar!