Select 来自 CakePHP 4 数据库 table 的不同年份
Select distinct years from a database table in CakePHP 4
我正在尝试使用简单的 SQL DISTINCT 查询从 CakePHP 4 中的数据库 table 中检索不同年份的列表。
在 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 查询示例来从数据库中获取唯一的年份table?
我认为这可能适合你:
$years = $this->Events->find() // "all" is the default, no need to specify it
->select(['year' => 'DISTINCT YEAR(Events.date)'])
->order(['year' => 'DESC']);
我正在尝试使用简单的 SQL DISTINCT 查询从 CakePHP 4 中的数据库 table 中检索不同年份的列表。
在 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 查询示例来从数据库中获取唯一的年份table?
我认为这可能适合你:
$years = $this->Events->find() // "all" is the default, no need to specify it
->select(['year' => 'DISTINCT YEAR(Events.date)'])
->order(['year' => 'DESC']);