Relacionamento com coluna adicional em pivot
Bom dia, Carlos. Estou enfrentando um problema e gostaria da sua opinião.
- Tenho uma tabela chamada (solicitations)
- Outra tabela chamada (items)
Fiz um pivot entre (solicitations e Items - item_solicitation)
Dentro desta tabela "item_solicitation", tem uma coluna extra chamada "user_id" (que também é uma chave estrangeira, mas para users). Para obter este atributo (Id), uso o withpivot em item_solicitation.. até ai tudo bem.
Mas, da mesma forma que eu consigo obter os dados de solicitations e items por meio de relacionamentos, gostaria de executar um HasOne em "user_id", que está como coluna extra no pivot.
Uma solução (feia no meu ponto de vista) é criar um mutator, verificar se o pivot user_id está preenchido e se sim, realizar um user::find(user_id).. mas é uma query a mais. Gostaria de saber se o laravel tem algum recurso do qual eu possa fazer esta consulta de forma limpa.
Isto é possível?
Agradeço pela sua atenção.
Olá, Jair!
Como vai?
Entendi o seu caso.
Você entendeu bem o funcionamento do framework. Realmente, para cada registro uma nova consulta é realizada para retornar o usuário relacionado;
Uma das soluções seria fazer uma query manual para retornar todas as informações que precisa (é possível utilizando os próprios recursos do Eloquent, usando repositories, claro!).
Outra alternativa possível é trabalhar com um model para a tabela pivô. Algo assim: https://laravel.com/docs/5.8/eloquent-relationships#defining-custom-intermediate-table-models
Se não ficou claro me avisa. Ok?
Precisa estar logado para conseguir responder a este ticket!
Clique Aqui Para Entrar!