我正在尝试在CakePHP 3中创建分组事物的列表,以在表单的选择列表中创建事物的分组列表。我不确定我是否遗漏了某些东西,或者我是否期望过多的蛋糕,而且我自己应该做得更多。
我有一个名为Issues
的控制器和一个名为RelatedIssues
的自引用列。每个Issue
都属于System
,这是我希望按问题分组的系统。
在我的IssuesTable.php
:
$this->belongsTo('RelatedIssues', [
'className' => 'Issues',
'foreignKey' => 'issue_id'
]);
$this->belongsTo('Systems', [
'foreignKey' => 'system_id',
'joinType' => 'INNER'
]);
...并使用IssuesController
的{{1}}方法:
edit
当我到达下拉列表时,项目按指定的$relatedIssues = $this->Issues->RelatedIssues->find('list', [
'groupField' => 'system_id'
]);
分组,但我无法弄清楚如何按system_id
的标题字段对它们进行分组。这是否可能,或者我是否必须自己编写一个漂亮的嵌套System
结构?
答案 0 :(得分:3)
应该是(现在可以):
$relatedIssues = $this->Issues->RelatedIssues->find('list', [
'groupField' => 'system.title'
])->contain('Systems');
答案 1 :(得分:1)
考虑以下内容,更清楚:
$relatedIssues = $this->Issues->RelatedIssues->find('list', [
'contain' => ['Systems'],
'order' => [ 'Systems.title' => 'ASC', 'RelatedIssues.title' => 'ASC'],
'groupField' => function($entity) {
return $entity->system->title;
}
]);