隨着我的CakePHP 2.4應用程序變大,我注意到我在模型層中傳遞了大量數組。蛋糕有點兒讓我走這條路,因爲它返回數組,而不是對象,從它的find
調用。但越來越多,這感覺很糟糕的做法。在CakePHP中使用Active Record模式,並避免傳遞數組周圍
例如,在我的工作模式,我有一個方法是這樣的:
public function durationInSeconds($job) {
return $job['Job']['estimated_hours'] * 3600; // convert to seconds
}
凡爲我想,用活動記錄行話,它應該看起來更像是這樣的:
public function durationInSeconds() {
return $this->data['Job']['estimated_hours'] * 3600; // convert to seconds
}
(即不帶參數,並假設當前實例代表您想要使用的作業)
第二種方式更好嗎?
如果是這樣,我該如何使用它,例如,我正在循環調用find('all')
的結果? Cake返回一個數組 - 我是否循環訪問該數組,併爲每一行執行read
? (似乎是一種浪費,重新從數據庫中獲取的信息)
或者我應該實現一種setActiveRecord
方法的模仿read
,像這樣:
function setActiveRecord($row){
$this->id = $row['Job']['id'];
$this->dtaa = $row;
}
還是有更好的辦法?
編輯:durationInSeconds
方法只是一個最簡單的例子。我知道這個特殊情況,我可以使用虛擬領域。但在其他情況下,我已經有了一些複雜的方法,虛擬域不會這樣做。
的'durationInSeconds'方法只是一個最簡單的情況,我以此爲例。在其他情況下,我已經爲每行提供了相當數量業務邏輯的方法,並且虛擬域不會削減它。對不起,我會更新我的問題以澄清這一點。 –