使用最新的CakePHP build 1.3.6。
我正在为外部REST API编写自定义数据源。我所有的阅读功能都很漂亮。我正在努力使用Model :: save&模型创建::
根据文档,必须实现以下方法(见下文并注意它没有提及计算)。这些都已实施。但是,我得到了一个“致命的错误:调用未定义的方法ApiSource :: calculate()”。所以我实现了ApiSource :: calculate()方法。
describe($ model)listSources()At 至少之一: create($ model,$ fields = array(),$ values = array()) read($ model,$ queryData = array()) update($ model,$ fields = array(),$ values = array()) 删除($ model,$ id = null)
public function calculate(&$model, $func, $params = array())
{
pr($model->data); // POST data
pr($func); // count
pr($params); // empty
return '__'.$func; // returning __count;
}
如果从我的模特打电话
$this->save($this->data)
它正在调用calculate,但没有其他实现的方法。我希望它能调用ApiSource :: create()或ApiSource :: update()
有任何想法或建议吗?
答案 0 :(得分:1)
class User extends AppModel
{
public $name = 'User';
public $useDbConfig = 'cvs';
public $useTable = false;
public $_schema = array(
'firstName' => array(
'type' => 'string',
'length' => 30
),
'lastName' => array(
'type' => 'string',
'length' => 30
),
'email' => array(
'type' => 'string',
'length' => 50
),
'password' => array(
'type' => 'string',
'length' => 20
)
);
...
}
我猜测如果你在自定义数据源中实现了一个describe()方法,它也可以解决问题。在这种情况下,需要预先定义以授权保存和/或创建。
答案 1 :(得分:0)
来自API:http://api13.cakephp.org/class/dbo-source#method-DboSourcecalculate
“返回SQL计算,即COUNT()或MAX()”
在〜/ cake中快速搜索可在8个文件中找到20个匹配项。其中之一是dbo_source.php中的定义
其他七个是:
如果不深入研究这个问题,我怀疑你的问题出在Model :: save
您可能必须定义一个计算方法以适应自定义数据源的结构,因为Cake不会知道如何执行此操作。