cakephp datasource调用未定义的方法

时间:2012-08-12 20:10:03

标签: php cakephp

我创建了一个简单的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()

如何解决?

...谢谢

1 个答案:

答案 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);
        }
    }
}