dongza6247 2012-08-12 20:10
浏览 37
已采纳

cakephp datasource调用未定义的方法

I've created a simple datasource:

// app/Model/Datasource/FeedSource.php

App::uses('DataSource', 'Model/Datasource');

class FeedSource extends DataSource {
    public function abcd() {
        echo 'Hello World!';
    }
}

in my database.php:

public $feed = array(
    'datasource' => 'FeedSource'
);

And in Feeda model:

class Feeda extends AppModel {
    public $useTable = false;
    public $useDbConfig = 'feed';
}

in list controller:

$this->loadModel('Feeda');
$this->Feeda->abcd();

But, it returns a fatal error:

Error: Call to undefined method FeedSource::query()

How to resolve it?

Thanks...

  • 写回答

1条回答 默认 最新

  • douxie4583 2012-08-13 01:28
    关注

    Perhaps you meant DboSource instead of DataSource.

    DataSource has no method query, DboSource does. Update your code to look like:

    App::uses('DboSource', 'Model/Datasource');
    class FeedSource extends DboSource {}
    

    Edit: Looks like that is not the issue. In the Model there is a magic __call method which calls $this->getDataSource()->query($method, $params, $this); Source You need to implement this yourself.

    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);
            }
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 做个有关计算的小程序
  • ¥15 MPI读取tif文件无法正常给各进程分配路径
  • ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决
  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化