从 CakePHP 4 中的数据库表中选择不同的年份

Posted

技术标签:

【中文标题】从 CakePHP 4 中的数据库表中选择不同的年份【英文标题】:Select distinct years from a database table in CakePHP 4 【发布时间】:2021-12-09 21:05:38 【问题描述】:

我正在尝试使用简单的 SQL DISTINCT 查询从 Cakephp 4 中的数据库表中检索不同年份的列表。

在 CakePHP 2 中,这非常简单。我在控制器函数中使用了以下行:

$this->set('years', $this->Event->findAll(null, array('DISTINCT YEAR(Event.date) as year'), 'date DESC'));

在 CakePHP 4 中,查询构建器是不同的,我一直在努力想出类似的东西。我觉得最接近的可比性是:

$years = $this->Events->find('all', array('fields' => array('DISTINCT YEAR(date) as year'), 'order' => array('year DESC')));
$this->set(compact('years'));

但是,这会产生一个完全不正确的 SQL 查询,它远非有效。我已经尝试按照他们的指示进行操作,但我想出的一切都失败了。

有人有一个简单的 CakePHP 4 查询示例来从数据库表中获取唯一年份吗?

【问题讨论】:

【参考方案1】:

我认为这可能对你有用:

$years = $this->Events->find() // "all" is the default, no need to specify it
    ->select(['year' => 'DISTINCT YEAR(Events.date)'])
    ->order(['year' => 'DESC']);

【讨论】:

非常感谢!我有一些接近于此的东西,但语法不太正确。非常感谢。

以上是关于从 CakePHP 4 中的数据库表中选择不同的年份的主要内容,如果未能解决你的问题,请参考以下文章

cakephp - 从其他表中获取行

cakephp 4 - 如何从相关表中查找最大值和最小值

将数据保存到 2 个表中 cakephp 3

CakePHP 3 更新连接表中的数据

具有不同表名和插件的 Cakephp 夹具

CakePHP:如何使用内部联接从两个表中检索数据?