cakephp 3.6从数据库中获取相关数据

时间:2018-05-19 09:06:59

标签: php cakephp-3.0

我是CakePHP的新手,有些东西没有按预期工作。

我有一个PostsController,方法如下:

function getInfo() {
    let search = "Teatr Wielki";

    fetch("https://en.wikipedia.org/w/api.php?&origin=*&action=opensearch&search=" + search + "&limit=5", {
        headers: {
            'Accept': 'application/json',
        },
    }).then(response => response.json())
      .then(addInfo)
      .catch (e => requestError(e));

    function addInfo(data) {
        console.log(data);
        const info = data.results[3][1];
        if (info) {
            document.querySelector('#results').innerHTML = info;
        } else {
            document.querySelector('#results').innerHTML = 'Unfortunately, no info was returned for this data.'
        }
    }

    function requestError(e, part) {
        console.log(e);
        document.querySelector('#results').innerHTML = '<br>Oh no! There was an error making a request for this place';
    }
}

但是,如果我尝试从另一个表/模型中获取数据,如:

public function index()
{
    $posts = $this->Posts->find('all');
    $this->set(compact('posts');
}

这会给我以下错误:

  

在布尔值

上调用成员函数find()

我错过了什么?

我正在使用CakePHP版本3.6.3

2 个答案:

答案 0 :(得分:1)

在PostsController中只加载Posts Model,你也必须加载Categories模型。

public function index()
{
    $posts = $this->Posts->find('all');
    $categories = $this->loadModel('Categories')->find('all');

    $this->set(compact('posts', 'categories');
}

答案 1 :(得分:0)

PostsController中,$this->Posts会自动初始化,但$this->Categories则不会。假设帖子和类别相关联,您可以使用$this->Posts->Categories->find()。如果没有,您可以使用TableRegistry::get('Categories')->find()