关于codeigniter Active Records的get_where
功能的问题。我想得到一个类似的查询:
Select * from foo
where date = STR_TO_DATE('$month/$day/$year','%m/%d/%Y')
and time = STR_TO_DATE('$hour:$minute$ampm', '%l:%i%p')
现在我在我的模型中创建了一个如下所示的函数:
public function validate_if_existing($month,$day,$year,$hour,$minute,$ampm)
{
$event_date = "STR_TO_DATE('$month/$day/$year','%m/%d/%Y')";
$event_time = "STR_TO_DATE('$hour:$minute$ampm', '%l:%i%p')";
$this->db->flush_cache();
$query = $this->db->get_where('foo',array('event_date' => $event_date,'event_time'=> $event_time));
return $query->num_rows();
}
但它会返回0
行,我希望它是1
。我尝试检查$event_date
和$event_time
内容,它看起来完全符合我的预期。像这样:
STR_TO_DATE('01/01/2012','%m/%d/%Y')
我这样做错了吗?无论如何要解决这个问题?
答案 0 :(得分:0)
已经搞定了!我只是使用$this->db->where()
手动添加过滤器,如下所示:
$this->db->where('event_date',"STR_TO_DATE('$month/$day/$year','%m/%d/%Y')", FALSE);
就像在$this->db->select()
中一样。 $this->db->get_where()
只是一种快捷方式。在进行非复杂查询时很好用。感谢air4x给了我一些提示。 :)