我是Cakephp的新手。我正在尝试搜索mysql表。我想使用嵌套查询。

 class TableController extends AppController{
 .
 .
 public function show(){
    $this->set('discouns', $this->DiscounsController->query("SELECT * FROM discoun as Discoun WHERE gcil_id = 1"));//(SELECT id FROM gcils WHERE genre = 'Shoes' AND company_name = 'Adidas')"));
}


}
错误:

 Error: Call to a member function query() on a non-object


我也尝试过

public function show(){
    $this->DiscounsController->query("SELECT * FROM count as Count WHERE ctr_id = (SELECT id FROM ctrs WHERE genre = 'Shoes' AND company_name = 'Adidas')");
}


错误:

 Error: Call to a member function query() on a non-object


文件:C:\ xampp \ htdocs \ cakephppro \ myapp \ Controller \ CountsController.php

请帮忙。我已经尝试了最近几个小时。 :/

最佳答案

如注释中所述,您的代码存在一些问题。

首先,您尝试在Controller上调用query()方法,而应该在Model上执行该方法,因为它是处理数据库查询的模型,而控制器应仅用于调用这些方法以获取数据并将它们传递给视图。

第二件事是您正在执行一个非常简单的SQL查询原始数据,而不是使用CakePHPs built in functions
现在针对您的问题,只要正确设置了model relationships并遵循正确的命名约定,这应该是您从该控制器运行SQL查询的代码:

public function show(){
    $this->set('discouns', $this->Discouns->find('all', array(
        'conditions' => array(
            'gcil_id' => 1,
            'genre' => 'shoes',
            'company_name' => 'Adidas'
        )
    ));
}

关于mysql - CakePhp MySQL原始查询错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14937749/

10-12 14:11
查看更多