在CakePHP 3

时间:2015-10-12 20:51:49

标签: php cakephp cakephp-3.0

我正在尝试在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结构?

2 个答案:

答案 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;              
        }
]);