método create() usando relacionamento
[Concluído]
Carlos, bom dia amigo.
estou precisando salvar um model e seu relacionamento, tudo de uma vez, já fiz isso em outras ocasioes, mas não estou encontrando o erro agora.
estou recebendo um erro de relacionamento:
SQLSTATE[HY000]: General error: 1364 Field 'inventory_id' doesn't have a default value (SQL: insert into `logs` (`after`, `before`, `updated_at`, `created_at`) values (0, 1500, 2022-04-11 09:24:42, 2022-04-11 09:24:42))
o projeto está no git, caso queira olhar:
https://github.com/zurctrebla/new-ttech
Olá, Albert!
Tudo bem?
Neste array $data vc precisa passar o inventory_id (aí precisa ter este valor no array de $fillable do model)
Ou, vc recupera o inventory e insere a partir do relacionamento:
$inventory = Inventory::find($request->inventory_id);
$inventory->logs()->create($request->all());
no fillable do model Log, está declarado inventory_id, no array $data não existe o inventory_id porque este inventory está sendo criado agora, estou tentando passar tudo junto em $inventory->logs()->create($data), mas não está funcionando. Pode ser erro no relacionamento entre os models?
Esqueci de informar: estou usando observer na model inventory, seria isso o motivo de não criar o model com o relacionamento?
Posta o código no GitHub, porque fica mais fácil para mim analisar ele pra vc!
O git tá na primeira pergunta
https://github.com/zurctrebla/new-ttech
Aqui ficou errado, vc passou a instância, precisa do objeto:
https://github.com/zurctrebla/new-ttech/blob/4d678cae83c7a7970b7a03a3b5355458e69dd45e/app/Repositories/InventoryRepository.php#L31
$inventory = $this->entity->create($data);
$inventory->logs()->create($data);
Resolvido!
Obrigado novamente.
Precisa estar logado para conseguir responder a este ticket!
Clique Aqui Para Entrar!