我是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
答案 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()
。