賃貸物件のポートフォリオを管理するウェブサイトを構築しようとしています。サイト所有者は、物件のリストを作成できます。プロパティには 1 泊あたりのデフォルト料金がありますが、8 月などの特別料金を設定する機能も含まれています。
サイトのユーザーは、サイトにアクセスして日付範囲を入力し、その期間に利用可能なリストを検索できます。その段階で、デフォルト価格に代わる特別価格があるかどうかも確認する必要があります。
だから私が持っているテーブルは次のとおりです。
listings
id
default_price
etc...
bookings
id
listing_id
checkin
checkout
special_prices
id
listing_id
from
to
price
しかし、私は sql クエリが苦手で、入力された期間中に予約がなく、存在する場合は special_price を取得するリストに対してクエリがどのように見えるかを理解できません。
クエリの作成が簡単になる場合は、cakephp を使用しています。誰でも私を助けることができますか?
編集 やあみんな、私はまだこれを理解しようとしています.リクエストされた日付と衝突する予約のないリストを取得することに集中しています.その後、特別価格のものを整理します.
私が持っている瞬間:
$conditions = array(
"AND" => array(
"OR" => array(
"Listing.address_one LIKE" => "%".$area."%",
"Listing.address_two LIKE" => "%".$area."%",
"Listing.city LIKE" => "%".$area."%",
"Listing.postcode LIKE" => "%".$area."%",
"Listing.title LIKE" => "%".$area."%",
),
)
);
$this->Listing->bindModel(array('hasMany' => array('Booking' => array('conditions' =>array('Booking.checkin BETWEEN ? AND ?' => array($to, $from))))));
$data = $this->paginate('Listing', $conditions);
$this->set('data', $data);
これにより、Listing cols の $area キーワードに一致するすべての結果が取得されますが、Bookings テーブルは完全に無視されているようです。NOT BETWEEN を挿入して違いが生じるかどうかを確認しましたが、それでも $area に一致するものを返すだけで、要求された日付間の予約は無視されているようです。
誰でもアイデアはありますか?