我正在使用以下查询,但是当它运行时会出现mysql语法错误。我正在使用cakephp 3框架。在这种情况下,错误正在生成->where([DATE('Bookings.created') => date("Y-m-d")]),因此您可以建议如何避免此问题。

$this->loadModel('ServiceManager.Bookings');
            $queryTodayAppointment = $this->Bookings->find('all')
                ->select(['Users.fullname', 'Bookings.slot_time'])
                ->where([DATE('Bookings.created') => date("Y-m-d")])
                ->contain(['Users'])
                ->order(['Bookings.id' => 'DESC'])
                ->limit(5);

最佳答案

假设您实际上必须使用DATE函数,则有许多方法可以实现此功能。

最简单的一个(这就是您已经在尝试做的,但是您只是忘了引用该函数)

->where(["DATE(Bookings.created)" => date("Y-m-d")])


但是您也可以使用Cake SQL函数(reference

$query = $this->Bookings->find();
$date = $query->func()->date(['Bookings.created' => 'identifier']);
$query->select(['Users.fullname', 'Bookings.slot_time'])
    ->where(function ($exp, $q) use($date) {
        return $exp->eq($date, date("Y-m-d"));
    })
    ->contain(['Users'])
    ->order(['Bookings.id' => 'DESC'])
    ->limit(5);

关于mysql - SQLSTATE [42000]:语法错误或访问冲突:1064您的SQL语法有错误;,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40883052/

10-11 23:59
查看更多