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