Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Problemas com hasMany

da a seguinte mensagem: Trying to get property of non-object;

li na propria documentação do laravel, dizendo que quando você não seta nada, por padrão ele considera final _id, tentei isso tbm

https://laravel.com/docs/5.1/eloquent-relationships#one-to-many

Estou tentando fazer exatamente como está descrito na atividade, tentei com o campo categoria_id, tentei com categoria, mas nada resolveu.

alguma ajuda?

2 respostas

Pode postar o código indicando a linha do erro?

Quais tabelas você está tentando relacionar?

Os tipos de campo são iguais?

A chave estrangeira do relacionamento deve terminar com "_id", e a chave primária do outro lado do relacionamento é somente "id".

solução!

Bom dia GABRIEL DE JESUS FILHO.

Após pesquisas, acabei conseguindo encontrar algumas coisas.

"A chave estrangeira do relacionamento deve terminar com '_id', e a chave primária do outro lado do relacionamento é somente 'id'."

Depois que vi essa regra na documentação com calma, apliquei ao meu projeto, alterando as tabelas e código e funcionou. Ainda não apliquei de forma diferente, mas aprendi que tem como você dizer pro eloquent, que seu campo é diferente, informando em belongsTo os parametros. Fica mais ou menos assim:

return $this->belongsTo('estoque\Categoria', 'idCategoria', 'codigo');

sendo segundo e terceiro parâmetro, o campo na tabela produto, e o campo na tabela categoria.

segundo a documentação, funciona, mas ainda não testei dessa forma.

Existem situações, em que sua classe é composta por duas palavras, por exemplo "unidadeMedida", que mesmo seguindo a regra de ter "_id" , é interessante por o segundo parametro, ficando assim:

return $this->belongsTo('estoque\UnidadeMedida', 'unidadeMedida_id');

Espero que essa resposta ajude outras pessoas também!