显示控制器的SQL查询

时间:2015-11-10 10:42:53

标签: php mysql sql cakephp cakephp-3.0

我正在使用cakephp v3.x和mysql。

我想看一个控制器的SQL查询。该控制器没有错误,并且运行成功。

public function appGetResult()
{
    $this->autoRender = false;
    $start_date = $this->request->query['start_date'];
    $end_date = $this->request->query['end_date']; 

    $results = $this->MonthlyReports->getResult($start_date, $end_date);

    echo json_encode($results);
} 

如何修改控制器代码以显示用于生成结果的SQL查询?这不适用于实际生产用途。更多的考试。

3 个答案:

答案 0 :(得分:2)

您可以在CakePHP3上启用查询日志记录:http://book.cakephp.org/3.0/en/orm/database-basics.html#query-logging

如果您对进行更多调试等感兴趣,DebugKit做得非常出色。

答案 1 :(得分:1)

我想出了一个间接的方式来回答我自己的问题。这是查看MySQL查询语句的间接方式。

public function appGetResult()
{
    //$this->autoRender = false;
    $start_date = $this->request->query['start_date'];
    $end_date = $this->request->query['end_date']; 

    $results = $this->MonthlyReports->getResult($start_date, $end_date);

    echo json_encode($results);
} 

通过评论离开$this->autoRender = false;并且没有视图.ctp,php页面会停止并显示错误。 DebugKit面板将显示在错误的网页上。在DebugKit面板中,可以看到SQL语句。

答案 2 :(得分:0)

您可以使用getLog()或showLog()函数来执行此操作

var_dump($this->MonthlyReports->getDataSource()->getLog(false, false));
var_dump($this->MonthlyReports->getDataSource()->showLog());