尝试将 sql 查询详细说明到 cakephp 时总是出错;如何转换这个?
Posted
技术标签:
【中文标题】尝试将 sql 查询详细说明到 cakephp 时总是出错;如何转换这个?【英文标题】:always getting error trying to elaborate sql query into cakephp; how to convert this one? 【发布时间】:2022-01-12 01:38:15 【问题描述】:如果我在 phpMyAdmin (SQL) 语句中使用以下代码,它会起作用,并且我会得到接下来 31 天的所有生日列表。这是我的代码:
SELECT
*
FROM
membres
WHERE
DATE_ADD(
date_de_naissance,
INTERVAL
YEAR(CURDATE()) -
YEAR(date_de_naissance) +
IF(DAYOFYEAR(CURDATE()) > DAYOFYEAR(date_de_naissance), 1, 0)
YEAR
)
BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 31 DAY)
AND
(
MONTH(date_de_naissance) <> MONTH(CURDATE())
OR
DAY(date_de_naissance) <> DAY(CURDATE())
)
在 Cakephp 中会怎样?请帮忙
【问题讨论】:
【参考方案1】:我通常发现在 CakePHP 中做日期数学比在 mysql 中容易得多,所以我会做这样的事情:
$birthday_members = $this->Membres->find()
->where([
'date_de_naissance >' => Cake\I18n\FrozenDate::now(),
'date_de_naissance <=' => Cake\I18n\FrozenDate::now()->addDays(31),
]);
【讨论】:
因为我有 3.4x,这是消息:错误:[错误] 类 'App\Controller\FrozenDate' 未在中找到 我假设你知道命名空间在 PHP 中是如何工作的;它确实使代码更具可读性,而不是添加那种混乱。在文件顶部为该类添加use
,或将完整的类命名空间放在此处的代码中。
FrozenDate 不是 3.4x 中可用的类,如何让它可用?或修改提议的声明..
其实是available in 3.4。以上是关于尝试将 sql 查询详细说明到 cakephp 时总是出错;如何转换这个?的主要内容,如果未能解决你的问题,请参考以下文章