私は数日間これを理解しようとしています。値の配列をマスター配列にする必要があり、それはすべて 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;
残念ながら、これは私が望むようには機能しませんでした。配列内の値にアクセスするには、それらが既に存在している必要があります(結果として、既にハッシュにあるデータを含むサブ配列が生成されます)。現在、これらの余分なデータを削除することを検討していますが、最初に追加したデータを削除するのは非常に不便に思えます