2
respostas

[Dúvida] Melhor forma de preencher dashboard (Laravel)

Eu tenho um painel de dashboard onde lá irá constar o total de produtos cadastrados, produtos ativos, suspensos, e assim por diante.

Quando eu fazia esses painéis em mysqli eu costumava fazer uma query para cada status, mas acho que é impraticável em Laravel.

A minha dúvida é, como eu faria para preencher esse dashboard com os dados que eu quero? Eu já cocei a cabeça, e dei uma revirada na internet, mas não encontrei nada claro...

O link do projeto no git é esse (caso precise).

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

ProdutosController.php

class ProdutosController extends Controller
{
    public function index()
    {
        return view('produtos.index');
    }

    public function adicionar()
    {
        return view('produtos.adicionar');
    }
        
}

Rota de Produtos: Route::get('/produtos',[ProdutosController::class,'index'])->name('produtos');

Migration Produtos:

public function up(): void
    {
        Schema::create('produtos', function (Blueprint $table) {
            $table->increments('produtoID');
            $table->string('nomeProduto', 100);
            $table->string('descricao', 100);
            $table->string('linkAfiliado',256);
            $table->tinyInteger('categoriaProdutoID');
            $table->tinyInteger('afiliacaoID');
            $table->tinyInteger('statusProduto');
            $table->string('slugProduto', 100);
            $table->string('imagemProduto', 256);
            $table->softDeletes();
            $table->timestamps();
        });
    }
2 respostas

Olá Elisame,

Dei uma olhada por cima em seu código e, não sei se é exatamente isso que você quer mas, talvez você possa fazer dessa forma:

No seu dashboard, chama uma consulta com as categorias e coloca dentro de um laço e faz um count para os produtos associados as categorias respectivamente para listar.

Talvez precise incluir no seu cadastro de categorias, o icone que você deseja associar.

Como produtos tem uma chave estrangeira para categorias, você poderá fazer essa associação na sua model também, sem precisar chamar uma consulta nova a cada iteração.

Espero que ajude.

Abraço!

Eu cheguei a um esqueleto que preenche alguns campos, mas acho que o código ficou muito grande com apenas 4 status:

public function index()
    {
        /*Total de Produtos */
        $totalProdutos = Produto::all();

        /* Produtos Ativos */
        $produtosAtivos = DB::table('produtos')
        ->select('*')
        ->where('statusProduto','=','1')->get();

        /* Produtos Rascunhos */
        $produtosRascunhos = DB::table('produtos')
        ->select('*')
        ->where('statusProduto','=','2')->get();

        /* Produtos Suspensos */
        $produtosSuspensos = DB::table('produtos')
        ->select('*')
        ->where('statusProduto','=','3')->get();

        return view('produtos.index', compact('produtosAtivos', 'totalProdutos', 'produtosSuspensos', 'produtosRascunhos'));
    }

E na página do dashboard:

<div class="col-md-8 col-lg-12 col-xl-12 col-xxl-8">
      <h6 class="text-muted font-semibold">
            Produtos Cadastrados
      </h6>
      <h6 class="font-extrabold mb-0">{{ $totalProdutos->count() }}</h6>
 </div>

E o resultado é esse: Insira aqui a descrição dessa imagem para ajudar na acessibilidadeExiste outra forma de eu fazer isso sem ser tão "engessado"?

Edit: atualizei o repositório com os novos códigos

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software