PhalconPHP - 在解析错误之前扫描错误

时间:2015-04-12 10:33:30

标签: php mysql phalcon

我正在使用PhalconPHP 1.3.4构建一个Web应用程序,我正在尝试同时从多个表中选择数据,因为某些值通过关系存储在另一个表中。

我的查询在MySQL工作台中运行正常,但是当我尝试使用PhalconPHP执行它时,我收到以下错误:

Scanning error before 'Bookings, Trips]...' when parsing: SELECT count(bkId) AS bookings FROM [Bookings, Trips] WHERE ((bkUserId = :userId:) AND (CURDATE() > tripFromDate)) AND (CURDATE() < DATE_ADD(tripFromDate, INTERVAL 2 WEEK)) (172)

我的PHP代码:

$query = new Builder();
$query->columns("count(bkId) AS bookings");
$query->from('Bookings, Trips');
$query->where("bkUserId = :userId:");
$query->andWhere("CURDATE() > tripFromDate");
$query->andWhere("CURDATE() < DATE_ADD(tripFromDate, INTERVAL 2 WEEK)");
$result = $query->getQuery()->execute(["userId" => $userId])->bookings;
return ($result > 0);

我已经读过这可能是一个错误,但它应该已经在1.3.2版本中得到修复,我目前有什么问题吗?

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

我不相信from中的两列是正确的语法。在文档中有这个例子:

$builder->from('Robots')
    ->addFrom('Parts', 'p');

所以你的例子应该是

 $query = new Builder();
    $query->columns("count(b.bkId) AS bookings");
    $query->from('Bookings', 'b');
    $query->addFrom('Trips');
    $query->where("b.bkUserId = :userId:");
    $query->andWhere("CURDATE() > b.tripFromDate");
    $query->andWhere("CURDATE() < DATE_ADD(b.tripFromDate, INTERVAL 2 WEEK)");

无论是这个还是你最好转换为使用连接。