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
陣列的結構很有用,還是我錯過了某些東西?
今天遇到這個問題。有時$結果集是一個多維數組,有時不是。我覺得這應該是一個很大的問題。 – vinhboy
哇,我可以吻你。這只是在我的頭撞了4個小時後才救了我。 – bowlerae