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