Использование встроенной функции MySQL в активных записях (codeigniter)

Я пытаюсь получить все данные, дата которых больше или равна сегодняшним. Вот что я делаю:

$this->db->select('id, name'); $this->db->where('dr', '1'); $this->db->where('end >=', 'CURDATE()'); $query = $this->db->get('store'); 

Но он не работает. Что я не так?

Solutions Collecting From Web of "Использование встроенной функции MySQL в активных записях (codeigniter)"

Активные записи автоматически ускользают от вашего запроса, поэтому 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"));