[Laravel] Como criar uma lista de registros: Ordenação

Olá! Nesse post pretendo mostrar como você pode criar facilmente uma lista com ordenação no Laravel. Estou utilizando o package laraerp/ordination para facilitar na criação das URL’s. O resultado final será este:

Exemplo ordenação laravel

1) Primeiramente crie um projeto Laravel utilizando o composer:

composer create-project laravel/laravel NOME_DO_SEU_PROJETO

Quando finalizar a instalação, acesse a pasta do seu projeto e edite o arquivo .env  com as informações do seu banco de dados.

2) Adicione o package laraerp/ordination

composer require laraerp/ordination

3) Acesse seu arquivo config/app.php e adicione o Provider e o Alias:

4) Agora será necessário criar o modelo Cliente, criar tabela no banco de dados e popular com registros fictícios.

Utilize o comando php artisan make:model Cliente para criar o modelo.

Acesse a pasta app  e edite o arquivo Cliente.php para informar as colunas que serão acessadas pelo modelo e adicionar a OrdinationTrait :

 

Acesse a pasta database/migrations  e edite o arquivo _create_clientes_table.php para informar as colunas que serão criadas:

Acesse a pasta database/seeds  e edite o arquivo DatabaseSeeder.php para inserir dados fictícios:

Para aplicar, basta chamar o comando php artisan migrate --seed

5) Agora vamos editar o arquivo  app/Http/Controllers/WelcomeController.php  para buscar os registros no banco de dados

5) Para finalizar, editamos o arquivo resources/views/welcome.blade.php com o HTML responsável por percorrer os registros. Observe no header da <table> que os links estão sendo criados pelo método Order::url()

O código fonte do projeto está disponível no meu Github:

https://github.com/jansenfelipe/exemplo-laravel-listar-registros

  • Felipe Albert

    Poderia me ajudar? Estou tentando usar o package mas está dando o seguinte erro:

    Your requirements could not be resolved to an installable set of packages.

    Problem 1

    – laraerp/ordination v1.0.3 requires illuminate/support 5.0.* -> no matching package found.

    – laraerp/ordination v1.0.2 requires illuminate/support 5.0.* -> no matching package found.

    – laraerp/ordination v1.0.1 requires illuminate/support 5.0.* -> no matching package found.

    – laraerp/ordination 1.0.0 requires illuminate/support 5.0.* -> no matching package found.

    – Installation request for laraerp/ordination ^1.0 -> satisfiable by laraerp/ordination[1.0.0, v1.0.1, v1.0.2, v1.0.3].

    Potential causes:

    – A typo in the package name

    – The package is not available in a stable-enough version according to your minimum-stability setting

    see for more details.

    Read for further common problems.

    Installation failed, reverting ./composer.json to its original content.

    Estou usando o Laravel 5.1

    • Olá Felipe! Realmente o pacote não estava funcionando na versão 5.1 do laravel.

      Atualizei o pacote. Pode testar aí!

      • Felipe Albert

        Opa blz?

        Consegui instalar, mas ainda apresenta erro….

        Non-static method AppBase::orderBy() should not be called statically,
        assuming $this from incompatible context’,
        ‘/var/www/tarefas_criacao/app/Http/Controllers/UserController.php

        Se puder ajudar, agradeço!

        • Beleza!

          Agora parece ter algum problema no seu UserController.php ou no Base.php.. Posta o código para eu tentar ajudar!

          • Felipe Albert

            UserController.php — http://pastebin.com/mGQPyASN

            Base.php — model (Extendo esse model no model de Usuários para utilizar o Search) — http://pastebin.com/ZDuYahhj

            Vlw!

          • Cara, não entendi bem seu código… O erro que vc enviou (“Non-static method AppBase::orderBy”…) está apontando em qual linha do arquivo UserController.php?

            Parece que vc está usando o https://github.com/nicolaslopezj/searchable.. Sim?

            Outra coisa, vc está usando o package deste post? Pergunto pois não vi onde vc colocou a OrdinationTrait … =/

          • Felipe Albert

            Estou usando o seu pack, o trait estou usando no model.

            O erro em questão, informa que a class não é estática.

  • Átila Delcanton

    Bom Dia!

    Muito bom seu package, porem estou com uma dúvida ele não permite fazer ordenação “composta” por exemplo ordeno primeiro por fornecedor e depois por quantidade, ele não faz mesmo, ou tem algum implementação para fazer isso?

    • Obrigado @tiladelcanton:disqus! Ele nao permite.. Mas você deu uma ideia boa!

      No momento não tenho uma implementação pronta pra isso… Fique a vontade se quiser sugerir algo!

      • Átila Delcanton

        Eu fiz uma em em php normal, se quiser compartilho com você me manda um e-mail [email protected] que te envio ai você ve se da para implementar.