[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
Wesley Kovalski
Criador Wesley Kovalski 29/09/2022

Em uma situação em que temos as tabelas (products, product_categorys, tenants) e uma tabela pivot (product_tenant).

Como exibir uma listagem, ao acessar um tenant específico, e exibir essas colunas:


NOME DO PRODUTO | NOME DA CATEGORIA

Criador Wesley Kovalski 29/09/2022

Consegui fazer, mas queria ver se é correto fazer assim:

if (empty($request['filter'])) {
$tenantProducts = $this->entity::join('product_tenant', 'tenants.id', '=', 'product_tenant.tenant_id')
->join('products', 'products.id', '=', 'product_tenant.product_id')
->join('product_categorys', 'products.product_category_id', '=', 'product_categorys.id')
->select('tenants.name AS name_tenant','products.id', 'products.name', 'products.active', 'product_categorys.name AS name_category')
->whereRaw("tenants.id = {$tenant}")
->orderBy('products.name', 'ASC')
->paginate($totalPage);
// ->toSql();
return $tenantProducts;
}

$filter = $request['filter'];

$tenantProducts = $this->entity::join('product_tenant', 'tenants.id', '=', 'product_tenant.tenant_id')
->join('products', 'products.id', '=', 'product_tenant.product_id')
->join('product_categorys', 'products.product_category_id', '=', 'product_categorys.id')
->select('tenants.name AS name_tenant','products.id', 'products.name', 'products.active', 'product_categorys.name AS name_category')
->where('products.name', 'LIKE', "%{$filter}%")
->whereRaw("tenants.id = {$tenant}")
->orderBy('products.name', 'ASC')
->paginate($totalPage);
// ->get();
// ->toSql();

return $tenantProducts;


OBS: quando eu rodo o ->toSql() o valor que está dentro da variável $filter vem vazio, porque será?
Wesley Kovalski
Manager Carlos Ferreira 29/09/2022

Olá, Wesley!
Tudo bem?

É assim mesmo, quando faz o dump, mostra apenas a query, e não os valores da consulta;

--

Sobre a query, está correta, usar join é válido. Talvez você pode explorar um pouco mais os relacionamentos, e usar with() para buscar dados relacionados de forma mais simplificada;

Carlos Ferreira
Criador Wesley Kovalski 29/09/2022

Muito obrigado, irei estudar esses relacionamentos para refatorar essa query que fiz. Forte abraço!

Wesley Kovalski
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!