I've got a table like this.
[id] [name] [age]
1 foo 20
2 bar NULL
If i need to return all the rows when age's fields is NULL i do the following and it works fine.
$this->db->from('person')->where('age', null);
The problem is that i need to do the opposite, i mean, return all rows when the age fields are not null values.
In SQL i do something like this
SELECT * FROM person WHERE age is not null
How do i do this using CodeIgniter ActiveRecord ??
Any help appreciated.
You may use:
$this->db->from('person')->where('age is not null');
If you curious how this happens see system/database/DB_active_rec.php
protected function _where($key, $value = NULL, $type = 'AND ', $escape = NULL)
{
...
if (is_null($v) && ! $this->_has_operator($k))
{
// value appears not to have been set, assign the test to IS NULL
$k .= ' IS NULL';
}
...
}
And system/database/DB_driver.php
/**
* Tests whether the string has an SQL operator
*
* @access private
* @param string
* @return bool
*/
function _has_operator($str)
{
$str = trim($str);
if ( ! preg_match("/(\s|<|>|!|=|is null|is not null)/i", $str))
{
return FALSE;
}
return TRUE;
}
As a result you could pass just first parameter to where()
method and if first operator of this method has a sub string is not null
it will be left untouched.
To read more - CodeIgniter forum
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With