[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
Richards Thomas
Criador Richards Thomas 24/05/2022

Não sei o que aconteceu, mas se eu ativo os Joins no repository de produtos, ele ao invés de retornar os produtos, retorna apenas uma categoria e modifica o nome. Tentei entender o que está acontecendo sem sucesso.

Pode ver se acha algum erro?

https://github.com/jo316dev/larafood

Adicionei o seu email para conseguir ver o projeto.

 

Manager Carlos Ferreira 24/05/2022

Olá, Richards!
Tudo bem?

Qual repositório exatamente está o erro?
Me diz qual a query mesmo, porque fica mais fácil para mim analisar e te dar um feedback.

No aguardo.

Carlos Ferreira
Criador Richards Thomas 24/05/2022

Opa, esta no ProductRepository:

 


public function getProductsByTenantId(int $id, array $categories)
{
// dd($id);
return DB::table($this->table)
->join('category_product', 'category_product.product_id', '=', 'products.id')
->join('categories', 'category_product.category_id', '=', 'categories.id')
->where('products.tenant_id', $id)
->where('categories.tenant_id', $id)
->where(function ($query) use ($categories) {
if ($categories != [])
$query->whereIn('categories.url', $categories);
})
->get();
}

 

 

Richards Thomas
Criador Richards Thomas 24/05/2022

Do jeito que está ai, ele retorna só um registro dos produtos, se remover o os joins, retorna todos os produtos

Richards Thomas
Manager Carlos Ferreira 24/05/2022

A lógica que usou para amarrar as tabelas nos joins ficou errada, por isso retorna apenas um registro.

Você quer retornar as categorias dos produtos também?

Fica mais fácil fazer essa query com o Eloquent:
Product::with('categories')
        // ->where('products.tenant_id', $id) nem precisa desse where
        // ->where('categories.tenant_id', $id) nem deste
        ->where(function ($query) use ($categories) {
            if ($categories != [])
                $query->whereIn('categories.url', $categories);
        })
        ->get();

Carlos Ferreira
Criador Richards Thomas 24/05/2022

Entendi, mas no curso está com DB ao invés do Eloquent e cheguei até copiar do repositório do curso. 

Vou mudar a lógica para o Eloquent. 

Richards Thomas
Criador Richards Thomas 24/05/2022

Tentei mudar do jeito que está na resposta mas ele reclama do ManagerTenant.

Eu também fiquei um pouco confuso nesse retorno. Se eu não coloco categoria alguma não deveria retornar todos os produtos?

 

Richards Thomas
Manager Carlos Ferreira 24/05/2022

Qual foi o erro que gerou do ManagerTenant?
Print: https://uploaddeimagens.com.br/

----

Comparei a sua query com a minha, e está quase igual, porém os seus filtros foram por colunas diferentes, como neste caso: https://github.com/especializati/larafood/blob/master/app/Repositories/ProductRepository.php#L26

Os valores que você está enviando para a API, são compatíveis com as colunas que usou como critério de pesquisa?

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

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!