Я пытаюсь получить все данные, дата которых больше или равна сегодняшним. Вот что я делаю:
$this->db->select('id, name'); $this->db->where('dr', '1'); $this->db->where('end >=', 'CURDATE()'); $query = $this->db->get('store');
Но он не работает. Что я не так?
Активные записи автоматически ускользают от вашего запроса, поэтому CURDATE () будет передаваться как строка вместо использования функции mysql. Вам лучше выполнить запрос вручную, что-то вроде
$query = $this->db->query("SELECT id,name FROM store WHERE dr = '1' AND end >= CURDATE()");
Или, если вы все еще хотите использовать AR, вы можете передать FALSE в качестве третьего параметра $this->db->where
избежать автоматического экранирования CI:
$this->db->select('id,name') ->where('dr','1') ->where('end >=', 'CURDATE()', FALSE); $query = $this->db->get('store');
Я не использую активные записи в CI, но я бы предположил, что CURDATE()
помещается в строку в запросе, поэтому он делает WHERE end >= 'CURDATE()'
в противоположность WHERE end >= CURDATE()
Если end
– это поле метки времени …
$this->db->where('end >=', time());
Если end
– это поле datetime, попробуйте …
$this->db->where('end >=', date("Ymd H:i:s"));