我有一个看起来像这样的MySQL表
-------------------------
field | parent_field
------------------------
model | series
height | series
height | model
length | model
length | height
表格是这样的结构,因此每个字段可以有多个parent_field
。
用户首先选择系列,然后我需要获取所有需要更改的字段。
例如,我需要一个包含
的表$fields = array(
'model' => [
'name' => 'model'
],
'height' => [
'name' => 'height'
],
'length' => [
'name' => 'length'
]
);
所以,虽然 length 没有parent_field
系列,但 height 又有系列为parent_field
。
我的逻辑如下
private function loadFields($parent) {
$children = array();
$children = $this->loadChildren();
foreach($children as $child) {
$data[$child->field][] = array(
'name' => $child->field,
.
.
.
);
}
}
函数loadChildren()
就是这样做的,它执行SELECT DISTINCT
并返回给定父级的子级。
但是,我需要继续为当前的孩子装载孩子。
我被困住,有人能指出我正确的方向吗?
答案 0 :(得分:0)
您可以使用GROUP_CONCAT
直接使用SQL查询来实现它SELECT field, GROUP_CONCAT(parent_field SEPARATOR ',') as parent_fields
FROM mytable GROUP BY field
解析行,您可以将parent_fields爆炸,然后获取所需的子数组,包含所有父值。