在cakephp中自定义查询

时间:2014-05-05 16:30:38

标签: php cakephp

我是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

我该如何纠正?

2 个答案:

答案 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教程并遵循惯例。在罕见/棘手的情况下,可能需要自定义查询,但这不是其中之一。