Entre muitos outros, "classe Active Record" é um dos recursos mais populares e úteis do CodeIgniter. Ele reduz o esforço de desenvolvedores para criar e executar consultas SQL. Em vez de escrever a sintaxe de consulta, aqui nós temos que chamar funções com parâmetros sequencialmente próprio, que durante a execução, os resultados de uma consulta SQL de corpo inteiro e retornos correspondentes resultados de banco de dados. Esta é uma grande ajuda, como ao escrever-nos, por vezes, para consultas longa / complexos, temos que corrigir sintaxe SQL várias vezes antes de começá-lo funcional.
Usando a Calsse:
Usar essa classe de registro ativo em uma aplicação CodeIgniter é bastante fácil. Lembre-se, não para usar esta no controle ou seção view (nem mesmo na libraries / plugins / helpers também), pois esta, na verdade, pertence a model section (camada de acesso a dados). Aqui estão alguns exemplos de código PHP são dadas abaixo:
function
get_result(
$id
){
$this
->db->select(
'title, content, date'
);
$this
->db->from(
'table1'
);
$this
->db->join(
'table2'
,
'comments.id = blogs.id'
);
$this
->db->where(
'id'
,
$id
);
$this
->db->get();
return
$query
->result();
}
Outro exemplo:
$this
->db->select(
'tableA.*'
, FALSE);
$this
->db->select(
'tableB.name, tableB.id AS new_name'
, FALSE);
$this
->db->from(
'tableA'
);
$this
->db->join(
'tableB'
,
'tableA.name = tableB.name'
);
$query
=
$this
->db->get();;
$results
=
$query
->result_array();
Note-se que, em 'WHERE', você pode passar um array associativo como parâmetros também. Isso vai assumir um 'AND' operador em cada key-value (key = db nome da coluna, value = resultado a ser verificado em relação) e vai construir a consulta em conformidade.
Inserção de dados também é bastante fácil como se segue:
$data
=
array
(
'id'
=>
"8"
,
'title'
=>
"test title"
);
$this
->db->insert(
'table_name'
,
$data
);
Usando operação Union em active record class:
Embora não seja possível a utilização de "UNION" diretamente, mas ainda assim, podemos implementá-lo com o uso de classe de registro ativo. Veja como:
Vamos assumir que estão se fundindo duas colunas diferentes em uma em uma tabela de banco de dados mesmo (Uma das possíveis razões pelas quais precisamos usar da União). Código deve ser algo como isto:
function
get_merged_result(
$ids
){
$this
->db->select(
"column"
);
$this
->db->distinct();
$this
->db->from(
"table_name"
);
$this
->db->where_in(
"id"
,
$model_ids
);
$this
->db->get();
$query1
=
$this
->db->last_query();
$this
->db->select(
"column2 as column"
);
$this
->db->distinct();
$this
->db->from(
"table_name"
);
$this
->db->where_in(
"id"
,
$model_ids
);
$this
->db->get();
$query2
=
$this
->db->last_query();
$query
=
$this
->db->query(
$query1
.
" UNION "
.
$query2
);
return
$query
->result();
}
Aqui, o que estamos fazendo é simplesmente recebendo a ajuda do codeigniter classe registro ativo para preparar duas consultas diferentes e estamos construindo manualmente nossa consulta original. Isso é tudo. A função acima irá retornar os resultados corretos com a operação UNION desejado.
fonte : http://codesamplez.com/database/codeigniter-activerecord