2012-11-10 13 views
8

Tring usare get_where e order_by in questo modo ...CodeIgniter get_where order_by

$query = $this->db->get_where($this->tbl_name, $where)->order_by('birth_date', 'ASC'); 

ma ha ottenuto questo errore ...

Fatal error: Call to undefined method CI_DB_mysql_result::order_by() in C:\xampp\htdocs\OAWA\application\models\Member_model.php on line 82 

Che cosa sto facendo di sbagliato?

+0

Quale versione di Code Igniter usi? Il documento dice: 'Nota: order_by() era precedentemente noto come orderby(), che è stato rimosso. –

+0

l'ultimo oneee – user979331

+0

Penso che potresti volere' -> dove() 'e non' -> get_where() ' . Almeno, darei una prova. – sberry

risposta

30

Nel record attivo di CodeIgniter, ogni metodo restituisce l'oggetto stesso (che consente il concatenamento del metodo) ad eccezione di get e get_where che restituiscono il set di risultati.

Così, quello che dovete fare è:

$query = $this->db->order_by('birth_date', 'ASC')->get_where($this->tbl_name, $where); 

vale a dire La chiamata get_where() deve essere l'ultimo. Restituisce il set di risultati, quindi chiamare order_by() dopo get_where() sta tentando di chiamarlo sul set di risultati che non è valido.

EDIT

Ci sono altri modi di scrivere questa query così:

$query = $this->db->from($this->tbl_name)->where($where)->order_by('birth_date', 'ASC')->get(); 
0

Questo ha funzionato per me

$query = $this->db->order_by('columnName', 'ASC')->get_where('tableName'); 
return $query->result(); 
+0

Qual è la differenza rispetto alla risposta già data? – Bowdzone

0
$this->db->order_by('birth_date', 'ASC'); 
$query = $this->db->get_where($field1, $field2); 
+1

Devi spiegare la tua risposta altrimenti è difficile capire che cosa fa.Veloce nome variabile '$ campo1',' $ file2' confusa –

0

$ mysql_query = "select * from tabella dove col_name = '$ dove' ordina per birth_date asc ";

$ query = $ this-> db-> query ($ mysql_query);

Ho provato questo solo ora e funziona per me