Utilizando models no CodeIgniter

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (2)  (0)

Veja neste artigo como utilizar os models do modelo MVC no framework PHP CodeIgniter.

Models do CodeIgniter

Figura 1: Models do CodeIgniter

INTRODUÇÃO

Neste artigo vamos falar sobre Models no CodeIgniter. O CodeIgniter é baseado no modo de desenvolvimento Model-View-Controller. A MVC é uma abordagem de software que realiza a separação da lógica da aplicação de sua apresentação. Na prática, permite que nossas páginas web contenham o mínimo de script, já que a apresentação é separada do PHP.

Observação: Models estão opcionalmente disponíveis para se quisermos usar a abordagem MVC mais tradicional.

Model: Representa nossas estruturas de dados. Tipicamente, nossas classes model irão conter funções que nos ajudarão a buscar, inserir e substituir informações em nosso banco de dados.

No CodeIgniter models são classes PHP projetadas para trabalhar a informação em nosso banco de dados. Por exemplo, suponhamos que vamos usar o CodeIgniter para gerenciarmos um portal. Poderíamos ter uma classe model contendo funções para inserir, atualizar e buscar nossos dados referentes ao portal no banco. Vejamos agora um exemplo de uma classe model.

Listagem 1: Exemplo de classe Model

class Portalmodel extends Model {
	var $title ='';
	var $content ='';
	var $Date ='';
	
	function Portalmodel()
	{
		// Chamar 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->contents =$_POST['content'];
	$this->date =time();
	$this->db->insert('entries',$this);
	}
	function update_entry ()
	{
	$this->Date =time();
	$this->db->update('entries',$this, array('id',$_POST[]));
	}
}

ESTRUTURA DO MODEL

As classes model devem ser armazenadas no seguinte diretório: application/models/. Podemos também fazer o armazenamento em subpastas.

O protótipo básico de uma classe model é:

Listagem 2: Model protótipo básico

class Model_name extends Model {

	function Model_name()
	{
		// Chamar o construtor do Model
		parent::Model();	
	}
}

Onde temos “model_name”, colocamos o nome da nossa classe. Uma coisa muito importante que não podemos esquecer é que os nomes de classes devem ter a inicial sempre maiúscula e também devemos nos certificar de que nossa classe estende a classe model básica.

Quando fomos salvar esse model, o seu nome será o nome da classe, só que todo em minúsculo. Por exemplo, se nossa classe é:

Listagem 3: Nome ao salvar a classe

class Artigos_model extends Model {

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

Então nesse caso nosso arquivo ficaria com o seguinte endereço no nosso diretório: Application/models/artigo_model.php.

CARREGANDO UM MODEL

Nossos models serão tipicamente carregados e chamados dentro das funções de nossos controllers. Para carregarmos um model, usaremos a seguinte função: $this->load->model(‘nome-do-model’);

Porém, caso nosso model esteja em uma subpasta, temos que incluir o caminho relativo ao nosso diretório. Por exemplo, se tivermos um model localizado em application/models/portal/artigo_model.php. iríamos carregar ele da seguinte forma: $this->load->model(‘portal/nome-do-model’);

Uma vez que tenhamos carregado, vamos acessar as funções de nosso model utilizando um objeto como o mesmo classe que havíamos criado:

$this->load->model(‘nome-do-model’);

$this->nome-do-model->function();

Se desejarmos atribuir nosso model a um objeto de nome diferente, podemos especificar isto através do seguinte parâmetro da função de carregamento:

$this->load->model(‘model-do-model’,’fubar’);

Vejamos um exemplo de um controller que carrega um model e então serve uma view.

Listagem 4: Carregando um model e servindo a uma view

<?php
class Inicial extends CI_Controller {	
	
	function artigos()
	{
	$this->load->model('artigos_model')
	$data['query']=this->artigos_model->get_last_ten_entries();
	$this->load->view('viewprincipal',$data);
	}
}
?>

CONECTANDO AO BANCO DE DADOS

Quando carregamos um model, ele não se conecta automaticamente ao nosso banco, as seguinte opções de conexão estão disponíveis:

Podemos conectar usando os métodos padrões de banco de dados, descritos aqui, através de nossa classe controller ou de sua classe model.

Podemos mandar a função de carregamento do model para se autoconectar passando TRUE (booleano) através do terceiro parâmetro, como definido no arquivo de configuração de banco de dados: $this->load->model(‘nome-do-model’,’’,TRUE);

Podemos também passar as configurações manualmente, também através do arquivo de configuração de banco de dados. Encontrado no diretório application/config/database.php.

Listagem 5: Dados do arquivo application/config/database.php

$db['default']['hostname'] = 'localhost';
$db['default']['username'] = '';
$db['default']['password'] = '';
$db['default']['database'] = '';
$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';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

CONCLUSÃO

Este artigo teve como objetivo apresentar um pouco dos models no CodeIgniter, não sendo obrigatória sua utilização em nossas aplicações web. Porém, nos deixando a disposição sua utilização, caso desejemos usar uma abordagem MVC completa. E tivemos a noção básica de como criarmos e carregarmos esses models. E por último vimos como modificar algumas configurações da conexão com o banco de dados.

Espero que tenha sido de fácil compreensão a todo os leitores. Fiquem a vontade para sugerir temas e dicas.

Abraços a todos e até ao próximo artigo.

LEITURA RECOMENDADA

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?