从joomla项目的两个日期之间的mysql获取数据

时间:2014-08-09 15:06:15

标签: php mysql joomla2.5

我必须修改一个简单的项目,以不同​​的方式显示一些值。

我有一个MySQL数据库,其中存有预订。

我希望从预订中获取所有数据,选择房间和期间。

这是我的疑问:

function getReservation($idroom,$date){
    $db=JFactory::getDbo();
    $query=$db->getQuery(true);
    $datecheck=$date->format('%Y-%m-%d');

    $query
         ->select($db->quoteName(array('idroom','status','idguests','nguests','value_paid','value_pending','value_full','valid_from','valid_to','today','extra_ids','nchilds')))
         ->from($db->quoteName('#__bookitbooking'))
         ->where($db->quoteName('idroom')."=".$idroom)
         ->and ( $db->quoteValue($datecheck) . "BETWEEN" . $db->quoteName('valid_from') . "AND" . $db->quoteName('valid_to'));
    $db->setQuery($query);

    $res = $db->loadObjectList();
    return $res;
}

但是and子句似乎没有效果,事实上当我从查询中获得保留的计数时,我得到了与$idroom值匹配的所有内容。

使用该功能,我想知道对于特定日期是否存在预约,如果存在,我想获得所有参数。

我的错误在哪儿?

显然,我最多只能获得一个预订对象。

1 个答案:

答案 0 :(得分:0)

您的语法有误。在使用核心Joomla DBO类时,在第二个where子句中假设“和”,其中检查日期。将第二个where子句行更改为:

->where(INSERT DATE QUERY HERE);

*编辑*

我注意到的另外几件事是日期格式化以及用于将值包装在表名和$ datecheck变量的引号中的方法。不是说你正在使用的日期格式不应该或不会起作用,但传统上我总是使用MySQL语法格式化我的日期。试试这个,它考虑MySQL日期格式并使用用于包装表名的DBO方法:

function getReservation($idroom,$date){
    $db=JFactory::getDbo();
    $query=$db->getQuery(true);
    $datecheck= date('Y-m-d H:i:s');

    $query
         ->select($db-quoteName(array('idroom','status','idguests','nguests','value_paid','value_pending','value_full','valid_from','valid_to','today','extra_ids','nchilds')))
         ->from($db->quote('#__bookitbooking'))
         ->where($db->quoteName('idroom')."=".$idroom)
         ->where( $db->quoteName($datecheck) . "BETWEEN" . $db->quoteName('valid_from') . "AND" . $db->quoteName('valid_to'));

    $db->setQuery($query);

    $res = $db->loadObjectList();
    return $res;

}