1

我需要通过查询检索产品可用性。我使用的 CMS 是 MODX。

我的数据库是这样的:

相机
中型 sku
_

RENTALS
cid
mid(这对应于上面的中间)
start_date
end_date

我的查询是根据是否“租用”来定位相机的可用性。

用户选择他/她的开始和结束日期,选择“定位相机”,mysql 查询如下所示:

    $a = $modx->newQuery('Cameras');
    $a->leftJoin('Rentals','Rentals',array('Rentals.mid = Cameras.mid'));
    $a->select(array('Rentals.start_date' <= $start_date(POST data from previous page)));
    $a->select(array('Rentals.end_date' >= $end_date(POST data from previous page)));
    $a->select(array('Cameras.*','Rentals.cid as customerid','Rentals.start_date as start'));
    $availability = $modx->getCollection('Cameras',$a);

    $ret = '<p>There are '. count($availability) . ' cameras available</p>';

我在数据库中添加了 5 个摄像头进行测试,并添加了一个作为租用的,但是查询继续返回“有 5 个摄像头可用”。它没有拿起“预订”的相机。

4

1 回答 1

1

您应该选择具有 Rentals.startdate >= enddate 或 Rentals.enddate <= startdate 的相机

<= 或 < 之间的选择取决于 startdate 的语义(是否包含)

于 2013-08-04T01:29:50.573 回答