[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
Igor Lagua Castro
Criador Igor Lagua Castro 07/06/2022

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

Manager Carlos Ferreira 07/06/2022

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.

Carlos Ferreira
Criador Igor Lagua Castro 07/06/2022

Mestre o repositório é privado, mas coloquei vc como colaborador. Veja se consegue acesso.

Usei sua conta carlosfgti

Igor Lagua Castro
Manager Carlos Ferreira 07/06/2022

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

Carlos Ferreira
Criador Igor Lagua Castro 07/06/2022

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

Igor Lagua Castro
Manager Carlos Ferreira 07/06/2022

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

Carlos Ferreira
Criador Igor Lagua Castro 07/06/2022

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

Igor Lagua Castro
Manager Carlos Ferreira 07/06/2022

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();

Carlos Ferreira
Criador Igor Lagua Castro 07/06/2022

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

Igor Lagua Castro
Manager Carlos Ferreira 07/06/2022

Mals Igor, é que fui debugando sua aplicação e escrevendo o ticket.

O problema era realmente apenas no Observer;

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

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!