SQLSTATE [42000]:语法错误或访问冲突:1064 SQL语法中有错误;

时间:2016-11-30 07:57:48

标签: mysql date cakephp-3.0

我正在使用以下查询,但是当它运行时会出现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);

2 个答案:

答案 0 :(得分:0)

您不需要在此处使用DATE()函数。只需将数据与当前日期进行比较:

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

答案 1 :(得分:0)

假设您实际上必须使用DATE函数,有很多方法可以实现它。

最简单的一个(这就是你已经尝试过但你只是忘了引用这个功能)

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

但您也可以使用蛋糕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);