我创建了一个简单的datasource
:
// app/Model/Datasource/FeedSource.php
App::uses('DataSource', 'Model/Datasource');
class FeedSource extends DataSource {
public function abcd() {
echo 'Hello World!';
}
}
在database.php
:
public $feed = array(
'datasource' => 'FeedSource'
);
在Feeda
模型中:
class Feeda extends AppModel {
public $useTable = false;
public $useDbConfig = 'feed';
}
list
控制器中的:
$this->loadModel('Feeda');
$this->Feeda->abcd();
但是,它会返回致命错误:
Error: Call to undefined method FeedSource::query()
如何解决?
...谢谢
答案 0 :(得分:1)
也许您的意思是DboSource
而不是DataSource
。
DataSource没有方法查询,DboSource也没有。将代码更新为:
App::uses('DboSource', 'Model/Datasource');
class FeedSource extends DboSource {}
编辑:看起来不是问题。在Model
中有一个魔术__call方法可以调用
$this->getDataSource()->query($method, $params, $this);
Source您需要自己实施。
class FeedSource extends DataSource {
public function abcd() {
echo 'Hello World!';
}
public function query($method, $params, $Model) {
// you may customize this to your needs.
if (method_exists($this, $method)) {
return call_user_func_array(array($this, $method), $params);
}
}
}