[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
Jair Deon
Criador Jair Deon 12/05/2019

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.

Manager Carlos Ferreira 12/05/2019

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?

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

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!