我正在尝试建立一个控制出租物业组合的网站。网站所有者可以为属性创建列表。该物业有每晚的默认价格,但也包括设置特殊价格的功能,例如 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);
这将获得与列表列中的 $area 关键字匹配的所有结果,但似乎完全忽略了 Bookings 表。我尝试输入 NOT BETWEEN 以查看它是否有所作为,它仍然只返回与 $area 匹配的任何内容,并且似乎忽略了请求日期之间的预订。
有人有什么想法吗?