【发布时间】:2014-02-07 23:50:58
【问题描述】:
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;
}
这是 hackish,我不喜欢它,但它似乎比 $primary 更有用。
明确说明,我的问题是:
-
$primary标志实际上有什么用处? - 我是否正确对于确定
$results数组的结构没有用处,还是我遗漏了什么?
【问题讨论】:
标签: cakephp