【发布时间】:2013-08-04 00:08:46
【问题描述】:
我需要通过查询检索产品可用性。我使用的 CMS 是 MODX。
我的数据库是这样的:
相机
中
型号
sku
出租
cid
中间(这对应于上面的中间)
开始日期
结束日期
我的查询是根据是否“租用”来定位相机的可用性。
用户选择他/她的开始和结束日期,选择“定位相机”,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 个摄像头可用”。它没有拿起“预订”的相机。
【问题讨论】:
-
我不熟悉 modx,但我认为您的查询应该在
WHERE子句中包含Rentals.start_date和Rentals.end_date。查看文档,我认为您需要rtfm.modx.com/display/xPDO20/xPDOQuery.where 和rtfm.modx.com/display/xPDO20/xPDOQuery.andCondition 来执行WHERE/AND。 -
感谢@Sean 这有效。这是我缺少
where子句。这些链接非常有帮助......现在已标记为书:)