【发布时间】:2015-02-06 11:40:25
【问题描述】:
下面是Banking MySQL 表结构:
id | name | type
1 | abc | xyz
2 | jkl | xyz
3 | efg | pql
现在记录以以下格式显示:
Array
(
[0] => Array
(
[Banking] => Array
(
[id] => 1
[name] => abc
[type] => xyz
)
)
[1] => Array
(
[Banking] => Array
(
[id] => 2
[name] => jkl
[type] => xyz
)
)
[2] => Array
(
[Banking] => Array
(
[id] => 3
[name] => efg
[type] => pql
)
)
)
我需要根据type字段分组字段并显示所有记录。以下是所需的结构:
Array
(
[xyz] => Array
(
[0] => Array
(
[id] => 1
[name] => abc
)
[1] => Array
(
[id] => 2
[name] => jkl
)
)
[pql] => Array
(
[0] => Array
(
[id] => 2
[name] => efg
[type] => xyz
)
)
)
我尝试按以下方式对其进行分组,但由于 GroupBy 每个 type 仅显示一条记录,因此没有成功。
$bankList = $this -> Banking -> find('all', array(
'order' => 'Banking.name asc',
'fields' => array(
'Banking.id',
'Banking.name',
'Banking.type'
),
'group' => array('Banking.type')
));
虽然我实现了自定义$bankList的结果:
foreach ($bankList as $b) {
if (!in_array($b['Banking']['type'], $type)) {
$type[] = $b['Banking']['type'];
}
$bList[$b['Banking']['type']][] = array(
'name' => $b['Banking']['name'],
'id' => $b['Banking']['id']
);
}
但想知道它是否可能仅使用查询?
【问题讨论】:
-
你应该使用 order by