Modelo


A camada modelo é responsável por gerenciar a leitura e a gravação das informações no banco de dados.

O Temma oferece 3 mecanismos para isso:

  • Acesso direto ao banco de dados, por meio do objeto de abstração \Temma\Datasources\Sql.
  • Criação automática de um objeto DAO pelo framework, para acessar facilmente uma tabela sem escrever nenhum código.
  • Escrita dos seus próprios objetos DAO, para tornar as consultas mais eficientes do que uma ferramenta automática faria.

A forma de usar esses mecanismos fica a seu critério. No entanto, sugerimos que você faça o seguinte:

  1. Comece usando o DAO gerado automaticamente pelo Temma. Ele permite escrever o código da sua aplicação rapidamente. Enquanto você precisar apenas de consultas simples em uma única tabela, isso funciona bem. Por exemplo, você escreveria:
    // recupera um usuário a partir do seu id
    $user = $this->_dao->get($userId);
    
    // recupera todos os usuários cujo campo 'valid' é verdadeiro
    $validUsers = $this->_dao->search(
        $this->_dao->criteria()->is('valid')
    );
    
  2. Se quiser simplificar o uso do DAO, você pode criar seu próprio DAO, que estende o padrão. Por exemplo, você pode criar um método:
    $proUsers = $this->_dao->getLastProfessionalUsers(5);
    
    que será mais fácil de usar e muito mais explícito do que:
    $proUsers = $this->_dao->search(
        $this->_dao->criteria()
            ->equal('type', 'pro')
            ->is('valid'),
        ['date_creation' => 'desc'],
        null,
        5
    );
    
    Esses métodos adicionais serão apenas camadas que servem para simplificar o uso do DAO, mas a implementação continuará sempre tão simples e rápida de escrever.
  3. Posteriormente, você pode enriquecer seu DAO personalizado, para que ele execute consultas complexas (com junções entre várias tabelas, subconsultas, agrupamentos, etc.). Você terá então que acessar o banco de dados diretamente e escrever suas próprias consultas SQL, mas se beneficiará do mecanismo de simplificação da escrita de consultas oferecido pelo framework.

No entanto, se você conhece bem SQL, recomendamos que escreva seus DAOs diretamente, colocando neles as consultas SQL. Isso sempre será mais eficaz a médio prazo.