我正在使用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查询?这不适用于实际生产用途。更多的考试。
答案 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());