CakePHPのModel::afterFind()
コールバックは次のようになります。
afterFind(array $results, boolean $primary = false)
ドキュメントによると:
この
$primary
パラメーターは、現在のモデルがクエリの発信元のモデルであるかどうか、またはこのモデルが関連付けとして照会されたかどうかを示します。モデルが関連付けとして照会される場合、の形式は$results
異なる場合があります。
それらは異なる可能性がありますが、実験により、常に異なるとは限らないことが示されています。私の知る限り、この$primary
パラメーターは実際にはそれほど有用ではありません。設定されてfalse
いる場合、フラット化されたデータ構造を取得する場合と取得しない場合があります。そのため、恐ろしい「文字列オフセットを配列として使用できません」というエラーメッセージが表示される場合と表示されない場合があります。
まだ試していませんが、ドキュメントに基づく私の考えは、$primary
フラグを完全に無視して、データを確認することでした。
public function afterFind($results, $primary = false) {
if (array_key_exists(0, $results) {
// operate on $results[0]['User']['fieldname']
} else {
// operate on $results['fieldname']
}
return $results;
}
これはハックで、私は好きではありませんが、よりも便利なようです$primary
。
明示的に述べたように、私の質問は次のとおりです。
$primary
旗は実際に何に役立ちますか?- 配列の構造を決定するのに役立たないのは正しいですか、それとも何かを見逃したことがありますか?
$results