2012-12-05 9 views
26

Ho una tabella nel mio database con adminId e clientIdPasso array per cui in Codeigniter Active Record

Ci potrebbe essere di 20 record con l'adminId del utenti registrati e sto cercando di tirare un elenco di clienti .

Mi chiedo se c'è un modo posso dire qualcosa del tipo:

$this->db->where('id', '20 || 15 || 22 || 46 || 86'); 

che sto cercando di fare questo con i dati dinamici (non si sa mai quanti clienti di Id avrete bisogno di tirare) . Qualche idea?

risposta

53
$this->db->where_in('id', array('20','15','22','42','86')); 

Riferimento: where_in

+0

Come posso farlo con un array per più condizioni? Ho un ciclo foreach come foreach ($ filter as $ column => $ value) {$ query = $ query-> where_in ($ column, $ value);} Ma questo non sta mettendo le virgolette e quindi produce una query errata. Come posso correggerlo –

+0

@HappyCoder: è necessario unire gli array e passare a where_in: Ad esempio: $ one_array = array (10,20); $ two_array = array (30,40); $ final_array = array_merge ($ one_array, $ two_array); $ this-> db-> dove_in ('id', $ final_array); – joHN

12

Usa where_in()

$ids = array('20', '15', '22', '46', '86'); 
$this->db->where_in('id', $ids); 
8

Dalla documentazione record attivo:

$this->db->where_in(); 

genera un campo DOVE IN ('voce', 'voce') query SQL uniti con e, se opportuno

$names = array('Frank', 'Todd', 'James'); 
$this->db->where_in('username', $names); 
// Produces: WHERE username IN ('Frank', 'Todd', 'James') 
+0

Mi dispiace, hai ragione è proprio lì nei documenti. Li ho effettivamente aperti e suppongo di averlo lustrato. Grazie per l'aiuto. –

0

genera un campo DOVE IN ('voce', 'voce') query SQL è unito con e, se necessario,

$this->db->where_in() 
ex : $this->db->where_in('id', array('1','2','3')); 

genera un campo DOVE IN ('voce', 'voce') Query SQL unita con OR se appropriato

$this->db->or_where_in() 
ex : $this->db->where_in('id', array('1','2','3')); 
Problemi correlati