这几天我一直在想办法解决这个问题。我需要将一个值数组放入主数组中,而这一切都必须来自 SQL 语句
public function fetchAllRest()
{
$db = $this->getAdapter();
$sql = $db->select()->from(array('c' => $this->getTableName()), array('id', 'personalId', 'name', 'number', 'email'))
->join(array('pd' => $this->getTableName('personal_data')), 'pd.personalId = c.personalId', array('street', 'zipcode', 'place'));
$results = $this->getAdapter()->fetchAll($sql);
return $results;
}
下面的代码生成一个包含所有记录的数组,包括与个人数据的连接(因此,如果我有 5 条记录,我将得到一个包含 5 条记录的数组)。
现在我想让 join 语句(personal_data 部分)作为另一个数组成为数组的一部分,所以现在我们有:
[
{1},
{2},
{3},
{4},
{5}
]
每个值都包含一个 (5+3) 值的数组(在本例中为带有键/值对的 JSON),这应该变为:
[
{1
{"personal_data" : "name", "number", "email"}
},
{2
{"personal_data" : "name", "number", "email"}
},
{3
{"personal_data" : "name", "number", "email"}
},
{4
{"personal_data" : "name", "number", "email"}
},
{5
{"personal_data" : "name", "number", "email"}
}
]
因此,原始数组中的自定义命名值的值“personal_data”包含该记录的所有personal_data。
我尝试遍历每个 SQL,但它产生了太多的语句,导致一些 mysql-bytes-error
有什么解决办法吗?
提前致谢
编辑:我尝试了以下方法:
foreach($results as $r) {
$results[$i]["personal_data"] = array('personalDataId' => $results[$i]['personalDataId'],
'name' => $results[$i]['name'],
'number' => $results[$i]['number'],
'email' => $results[$i]['email'];
$i++;
}
return $results;
太糟糕了,这并没有按照我想要的方式工作,因为为了访问数组中的值,它们必须存在(导致子数组的数据已经在散列中)。我现在正在考虑删除这些多余的数据,但删除我最初添加的数据听起来很不方便