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

のように動作し$this->db->select()ます。は $this->db->get_where()単なるショートカット形式です。複雑でないクエリを作成するときに使用するのに適しています。ヒントをくれたair4xに感謝します。:)

于 2012-10-28T18:48:21.067 に答える