我正在CakePHP模型類中工作,編寫一個應該在模型上執行大量操作的函數。我試圖追隨瘦身控制器,胖模特的想法。但是,我似乎無法在我的模型中使用模型函數的任何。一些尚未初始化,但因爲我得到當我做一個SQL錯誤:無法在CakePHP的Model類中調用set或create來創建?
Warning (512): SQL Error: 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 [CORE/cake/libs/model/datasources/dbo_source.php, line 681]
Query: SHOW FULL COLUMNS FROM
看起來好像表名稱尚未在內部設置的地方。我的模型是這樣的:
class Search extends AppModel {
var $name='Search';
var $hasMany = 'SearchResult';
var $actsAs = array('Containable');
function search($query) {
$this->create();
$this->set('query', $query);
$this->save();
}
}
我知道模型需求已經創作的作品應有盡有,因爲調用該功能完全一樣的序列工作從模擬控制器的罰款。像這樣:
function search($query) {
$this->Search->create();
$this->Search->set('query', $query);
$this->Search->save();
}
這工作正常。那麼是什麼給了?這裏發生了什麼?
這是一個非常簡化的版本。這是一個非常詳細的搜索功能,包含多個模型操作(根據對數據庫和其他模型的多個查詢創建父代和相關模型)。在模型的上下文中,'$ this-> set($ field,$ value);'與$ this-> data [$ field] = $ value相同;'這個問題變成了一個名字我的'search'函數和Cake的調用棧中更深層次的內容相沖突。改變功能的名稱使所有事情都再次開心。 – 2010-10-08 13:31:55
很高興你跟蹤它。太糟糕了'Model :: set'的文檔並不像你的解釋那麼簡潔。 – 2010-10-08 14:30:07
是的,文件肯定是相當缺乏。使蛋糕的學習曲線比需要的要粗糙得多。謝謝你的建議。 – 2010-10-09 07:21:12