Code Igniter Versão 1.5.2 - Guia do Usuário


Models

Models estão opcionalmente disponíveis para aqueles que quiserem usar a abordagem MVC mais tradicional.

O que é um Model?

Models são classes PHP projetadas para trabalhar a informação em seu banco de dados. Por exemplo, digamos que você use o Code Igniter para gerenciar um blog. Você poderia ter uma classe model contendo funções para inserir, atualizar e buscar seus dados do banco. Mais abaixo, um exemplo de como se parece uma classe Model:

class Blogmodel extends Model {

    var $title   = '';
    var $content = '';
    var $date    = '';

    function Blogmodel()
    {
        // Chama o construtor do Model
        parent::Model();
    }
    
    function get_last_ten_entries()
    {
        $query = $this->db->get('entries', 10);
        return $query->result();
    }

    function insert_entry()
    {
        $this->title   = $_POST['title'];
        $this->content = $_POST['content'];
        $this->date    = time();

        $this->db->insert('entries', $this);
    }

    function update_entry()
    {
        $this->title   = $_POST['title'];
        $this->content = $_POST['content'];
        $this->date    = time();

        $this->db->update('entries', $this, array('id', $_POST['id']));
    }

}

Note: As funções do exemplo acima usam as funções Active Record para banco de dados.

Anatomia de um Model

Classes Model são armazenadas em seu diretórios application/models/. Elas podem ser aninhadas em subdiretórios se você preferir.

O protótipo básico para uma classe Model é este:

class Model_name extends Model {

    function Model_name()
    {
        parent::Model();
    }
}

Onde Model_name é o nome da sua classe. Nomes de Classes devem ter inicial maiúscula. Tenha certeza que sua classe estende a classe Model básica.

O nome do arquivo será o nome da classe todo em minúsculas. Por exemplo, se sua classe é essa:

class User_model extends Model {

    function User_model()
    {
        parent::Model();
    }
}

Então seu arquivo será:

application/models/user_model.php

Carregando um Model

Seus models serão tipicamente carregados e chamados dentro das funções de seus controller. Para carregar um model, você usará a seguinte função:

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

Se seu model estiver em um subdiretório, inclua o caminha relativo para sua diretório. Po exemplo, se você tem um model localizado em application/models/blog/queries.php você o carregará usando:

$this->load->model('blog/queries');

Uma vez carregado, você acessará as funções de seu model utilizando um objeto como o mesmo classe que havia criado:

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

$this->Model_name->function();

Se você quiser atribuire seu model a um objeto de nome diferente, pode espeficicar isto através do segundo parâmetro da função de carregamento:

$this->load->model('Model_name', 'fubar');

$this->fubar->function();

Abaixo um exemplo de um controller, que carrega um model e então serve uma view:

class Blog_controller extends Controller {

    function blog()
    {
        $this->load->model('Blog');

        $data['query'] = $this->Blog->get_last_ten_entries();

        $this->load->view('blog', $data);
    }
}

Conectando-se a seu Bando de Dados

Quanto um model é carregado, ele NÂO se conecta automaticamente ao seu banco. As seguintes opções de conexão estão disponíveis: