我正在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