0

只是一个关于get_wherecodeigniter Active Records功能的问题。我想得到一个应该是这样的查询:

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')

我做错了吗?无论如何要解决这个问题?

4

1 回答 1

1

已经知道了!我只是使用这样的手动添加过滤器$this->db->where()

$this->db->where('event_date',"STR_TO_DATE('$month/$day/$year','%m/%d/%Y')", FALSE);

就像 in 一样工作$this->db->select()。这 $this->db->get_where()只是一种快捷形式。在进行非复杂查询时很好用。感谢 air4x 给了我一些建议。:)

于 2012-10-28T18:48:21.067 回答