我是cakephp的初学者。我想创建一个自定义查询并从cakephp中的表中检索数据。我在数据库中有一个名为key_uniqueword的表。
这是我的代码:
MODEL:
key_uniqueword.php
<?php
class key_uniqueword extends AppModel{
var $name = 'key_uniqueword';
public function get()
{
$this ->query("SELECT * FROM key_uniqueword");
}
}
控制器: ReadingManualsController.php
<?php
class ReadingManualsController extends AppController{
var $name = 'ReadingManuals';
function index(){
$this ->set('results',$this ->key_uniqueword-> get());
}}
视图: index.ctp
<!DOCTYPE html>
<?php
foreach($results as $result)
{
//display results here
}
?>
但我收到此错误消息。
Error: Call to a member function get() on a non-object
File: F:\xampp\htdocs\18\cake\app\Controller\ReadingManualsController.php
Line: 22
我该如何纠正?
答案 0 :(得分:3)
您的模型文件:
KeyUniqueword.php
<?php
class KeyUniqueword extends AppModel{
public $name = 'KeyUniqueword';
public $useTable = 'key_uniqueword'; // use own table name
public function get()
{
return $this ->query("SELECT * FROM key_uniqueword");
}
}
你的控制器:
<?php
class ReadingManualsController extends AppController{
public $name = 'ReadingManuals';
public $uses = array('KeyUniqueword','ReadingManual')
function index(){
$this ->set('results',$this ->KeyUniqueword-> get());
}}
答案 1 :(得分:2)
首先,你的get()函数不会返回任何内容!此外,&#39; $ this-&gt; key_uniqueword&#39;尚不存在。准备该变量有两种主要方法,包括:
class ReadingManualsController extends AppController{
var $name = 'ReadingManuals';
public $uses = array('key_uniqueword');//populates $this->key_uniqueword
...
或者您可以在使用之前创建它,例如在控制器内部:
$this->loadModel('key_uniqueword');
//now you can use $this->key_uniqueword
但是......你应该真正做一个简单的CakePHP教程并遵循惯例。在罕见/棘手的情况下,可能需要自定义查询,但这不是其中之一。