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