Utilizar os modelos a partir dos controladores em CodeIgniter

Como utilizar os modelos a partir de um controlador de CodeIgniter, carregar o modelo, solicitar dados ao modelo por meio de seus métodos e mostrá-los na tela com uma visão.

Por Miguel Angel Alvarez - Tradução de Celeste Veiga


Publicado em: 19/10/11
Valorize este artigo:
No artigo anterior do Manual de CodeIgniter começamos a explicar os modelos e como gerenciar as conexões à base de dados com eles. Vimos como são construídos os modelos, e agora passaremos a mostrar como utilizá-los a partir dos controladores.

Carregar um modelo

O carregamento de um modelo é realizado a partir do controlador que vai utilizaá-lo, por meio do método de carregamento de modelos, com um código como este:

$this->load->model('Nome_model');

Isto supõe que o modelo está no diretório geral dos modelos (system/application/models).

Agora, se pretendêssemos carregar um modelo que está em um subdiretório, teríamos que indicar a rota na função de carregamento do modelo.

$this->load->model('pasta_do_modelo/Nome_model');

Se quisermos carregar vários modelos de uma só vez, podemos fazê-lo passando um array com todos os modelos que desejamos carregar:

$this->load->model(array('Cliente_model','Fatura_model'));

Uma vez carregado um modelo, seus métodos para o acesso aos dados estarão disponíveis em nosso controlador, através do próprio objeto controlador, o nome do modelo que queremos acionar e a função que queremos invocar dentro do modelo.

$this->Nome_model->funcao_do_modelo();

Carregamento automático de modelos

Si desejarmos carregar automaticamente um ou vários modelos cada vez que se inicia qualquer solicitação de página em nossa aplicação web, ou seja, sem que tenhamos que carregá-los explicitamente a partir dos controladores, podemos especificar no arquivo de configuração "autoload.php" quais os modelos que vamos requerer sempre.

Este arquivo de configuração se encontra na rota "system/application/config/autoload.php". Temos que modificar a listagem de modelos a serem carregados na variável de configuração "model", com um código como este:

$autoload['model'] = array('Usuario_model', 'Empresa_model');

Isto carregaria o modelo de usuários e o modelo de empresas em todas as páginas de nossa aplicação web com CodeIgniter.

Exemplo de controlador que utiliza modelos

Para que se possa ver melhor como utilizar um modelo a partir de um controlador, vejamos um exemplo. A continuação, temos um esquema de um controlador que utiliza os modelos para extrair dados da base de dados e enviá-los a uma visão para mostrá-los na página.

class Fatura extends Controller {
   function mostrar_fatura($id_fatura){
      $this->load->model('Fatura_model');
      $fatura = $this->Fatura_model->dame_fatura_id($id_fatura);
      $this->load->view('mostrar_fatura', $fatura);
   }
}

Este controlador chamado Fatura tem uma função para mostrar uma fatura, que recebe o identificador da fatura que se deseja ver.

Em tal função se carrega o modelo adequado para o trabalho com faturas "Fatura_model". A seguir chamamos a função dame_fatura_id() do modelo carregado, à que passamos o identificador da fatura que desejávamos ver. A função dame_fatura_id() do modelo retorna um array com os dados da fatura. Depois, mostramos os dados da fatura com a visão "mostrar_fatura" e com os dados de configuração, que é o array que obtivemos ao invocar a função do modelo.

Com isto pudemos ver um controlador simplificado, que utiliza tanto um modelo quanto uma visão para mostrar o conteúdo de uma fatura que foi trazida da base de dados. Por fim, vimos todos os componentes do MVC trabalhando por separado e coordenados desde o controlador. Espero que até este ponto tenha ficado claro ao menos o modo em que trabalharemos com CodeIgniter, embora ainda haja muitas coisas no ar que trataremos de explicar no futuro.

Conectar com uma base de dados

Porém, antes de terminar este tema, caso alguém deseje fazer seus primeiros testes para construir um modelo, convém explicar como conectar com a base de dados em CodeIgniter. Na realidade existem diversos modos de conexão, automática e manual, mas não vamos vê-los todos agora.

Veremos simplesmente o método mais simples para fazer a conexão com a base de dados, que é a conexão automática. Esta, CodeIgniter a realiza por nós em cada página que se solicite o servidor e temos que configurá-la no arquivo de configuração autoload.php (system/application/config/autoload.php). Nesse arquivo veremos um array de bibliotecas que se tem que incluir em todos os controladores, array "libraries". Nesse array temos que colocar a biblioteca 'database', de uma forma como esta:

$autoload['libraries'] = array('database', 'outras_bibliotecas...");

Além disso, teremos que modificar outro arquivo de configuração chamado database.php (system/application/config/database.php), colocando todos os dados da base de dados que queremos usar: o servidor, usuário, contra-senha, base de dados, etc. Por exemplo, isto seria um exemplo de configuração de uma base de dados que temos em local.

$db['default']['hostname'] = "localhost";
$db['default']['username'] = "root";
$db['default']['password'] = "";
$db['default']['database'] = "faturacao";
$db['default']['dbdriver'] = "mysql";
$db['default']['dbprefix'] = "";
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = "";
$db['default']['char_set'] = "utf8";
$db['default']['dbcollat'] = "utf8_general_ci";






Usuários :    login / registro

Manuais relacionados
Categorias relacionadas
O autor

Home | Sobre nós | Copyright | Anuncie | Entrar em contato