Páginas

sexta-feira, 12 de setembro de 2014

CodeIgniter Active record class

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){  
    //For selecting one or more columns
    $this->db->select('title, content, date');
    //For determine one or more tables to select from
    $this->db->from('table1');
    //For joining with another table, table name as first argument and condition string as second argument
    $this->db->join('table2', 'comments.id = blogs.id');
    //assign where condition
    $this->db->where('id', $id);
    //function without any argument. It actually runs the query that was built on last few statements.
    $this->db->get();
    //returns result objects array
    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);


Para mais informações de referência sobre exatamente quais funções são permitidos, o que parâmetros com detalhes Explicação com exemplo, visite a documentação oficial sobre ele.


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

Nenhum comentário:

Postar um comentário