Skip to main content
O Adianti Framework oferece diversas maneiras de carregar coleções de objetos: com e sem filtros, definindo as colunas desejadas, etc. Veremos em detalhe os métodos de carregamento mais usados, começando com o carregamento mais simples de coleções, que pode ser escrito em uma linha do código-fonte:
    Classe::all();

7.1. Como carregar todos os registros de uma tabela?

O método all() irá carregar todos registros da tabela da classe usada. Um exemplo funcional seria:
    try
    {
        TTransaction::open('exemplos');

        $todos_funcionarios = Funcionario::all();

        TTransaction::close();
    }
    catch (Exception $e)
    {
        TTransaction::rollback();
        new TMessage('error', $e->getMessage());
    }
O comando SQL gerado pelo código-fonte acima é:
    SELECT 
        nome, sobrenome, dt_nascimento, funcao_id, cidade_id, endereco, cep, id 
    FROM 
        funcionario
O método all() não aceita filtros e sempre carregará todos os registros da tabela da classe instanciada. Como é possível observar pela query gerada, foram carregadas colunas nomeadas do banco de dados e não simplesmente um select *. Esse comportamento acontece pois o framework irá carregar apenas as colunas definidas como atributos dentro da Active Record funcionario. Veja a classe Funcionario:
<?php

    class Funcionario extends TRecord
    {
        const TABLENAME  = 'funcionario';
        const PRIMARYKEY = 'id';
        const IDPOLICY   =  'serial'; // {max, serial}

        /**
         * Constructor method
         */
        public function __construct($id = NULL, $callObjectLoad = TRUE)
        {
            parent::__construct($id, $callObjectLoad);
            parent::addAttribute('nome');
            parent::addAttribute('sobrenome');
            parent::addAttribute('dt_nascimento');
            parent::addAttribute('funcao_id');
            parent::addAttribute('cidade_id');
            parent::addAttribute('endereco');
            parent::addAttribute('cep');
        }
    }
As colunas carregadas no SQL da função all() são exatamente as mesmas definidas no método construtor da classe Funcionario + a chave primária. Portanto, se a tabela funcionario possuir uma coluna extra (idade por exemplo) não definida no método construtor, as informações de tal coluna idade não serão carregadas em comandos como o método all().

7.2. Como carregar coleções com filtros

É possível carregar uma coleção com filtros de duas maneiras:
  1. Carregamento estático;
  2. Carregamento com API de critérios.
Veremos ambos em mais detalhes a seguir.