2016-05-17 21 views
1

私はCodeIgniterを使用しています。私はいくつかの開始日と終了日を提供しており、これらの提供された日付またはその間に何が予約されているかを見たいと思っています。CodeIgniterレコード2つの日付の間の選択

$startdate = '2016-05-23'; 
$enddate = '2016-05-27'; 

$this->$db->select('reservationid, startdate, enddate'); 
$this->$db->from('reservation'); 
$this->$db->where('startdate >=', $startdate); 
$this->$db->where('enddate <=', $enddate); 
$query = $this->$db->get()->result_array(); 

return $query; 

Result = Array ([0] => Array ([reservationid] => KHAN2016Q224 [startdate] => 2016-05-23 [enddate] => 2016-05-27)) 

上記のクエリの結果は上記のようになります。

しかし、私は

$startdate = '2016-05-24'; 
$enddate = '2016-05-26'; 

を提供するとき、それは空の配列を返します。私はこの日付のようにいくつかの予約があり、それを除外したくないということを日付の間に検索するときに、上記の予約IDを再度返す必要があります。

+0

startdateが2016-05-21で終了日が2016-05-25の場合、またはstartdateが2016-05-21で終了日が2016-05-28、startdateが2016-05-25、enddateが2016-05-28の場合? – Vickel

答えて

0

私が正しく理解している場合は、2つの日付の間に期間がある予約を返却したいので、カスタムWHERE部分を書くことができます。もちろん

$startdate = '2016-05-23'; 
$enddate = '2016-05-27'; 

$this->$db->select('reservationid, startdate, enddate'); 
$this->$db->from('reservation'); 
$this->$db->where('(startdate BETWEEN "' . $startdate . '" AND "' . $enddate . '") OR (enddate BETWEEN "' . $startdate . '" AND "' . $enddate . '")'); 
$query = $this->$db->get()->result_array(); 

return $query; 

あなたは適切$startdate$enddateをエスケープするか、彼らはこれらの日付からDateTimeクラスを作成することで、適切な日付であることを確認を行う必要があります。

関連する問題