Shaiful è corretto, le sue dichiarazioni come sono scritte in modo non corretto, ma vorrei solo per estendere su questo che bisogna stare attenti con or_
clausole in Active Record. In Codeigniter questi non utilizzare le parentesi, quindi il seguente va bene:
$this->db->select('*');
$this->db->like('name', $name);
$this->db->or_like('surname', $surname);
$query = $this->db->get('workers');
Produce:
SELECT * FROM `workers` WHERE `name` LIKE `%$name%` OR `surname` LIKE `%$surname%`;
Ma se si estende la query in un secondo momento, il seguente non funziona correttamente:
$this->db->select('*');
$this->db->where('id', $id);
$this->db->like('name', $name);
$this->db->or_like('surname', $surname);
$query = $this->db->get('workers');
Questo produce:
SELECT * FROM `workers` WHERE `id`=`$id` AND `name` LIKE `%$name%` OR `surname` LIKE `%$surname%`;
Il problema con il secondo esempio è che la clausola WHERE
diventa facoltativa a causa dello OR
successivo in SQL.
Codeigniter 3 ha introdotto la possibilità di utilizzare parentesi e suggerirei il seguente approccio se esiste la possibilità che la query diventi più complicata in seguito.
Quindi un approccio più sicuro a mio parere quando si utilizza or_
clausole sarebbe:
$query = $this->db->select('*')->from('workers')
->group_start()
->like('name', $name)
->or_like('surname', $surname)
->group_end()
->get();
Nel tuo esempio attuale, però, non v'è alcun problema con quello che Shaiful ha dato ed è completamente compatibile con Codeigniter 2.