我正在使用CakePHP 3,我需要在多个表上运行原始SQL查询.在CakePHP 2中,可以通过在任何模型($this->Messages->query("select.."))上使用query()方法来完成.
我需要允许我在CakePHP 3中运行SQL查询的方法.以下是我正在使用的代码片段:
$aumTable = TableRegistry::get('Messages');
$sql = "SELECT (SELECT COUNT(*) FROM `messages`) AS `Total_Count`,
(SELECT COUNT(*) FROM `messages_output`) AS `Total_Output_Count`,
(SELECT COUNT(*) FROM `messages_output` WHERE `is_success`=1) AS `Total_Successful_Output_Count`,
(SELECT COUNT(*) FROM `messages_output` WHERE `is_success`=0) AS `Total_Error_Output_Count`,
(SELECT COUNT(*) FROM `users`) AS `Total_User_Count`;";
// to run this raw SQL query what method should i use? query() doesn't work..
// $result = $aumTable->query($sql); ??
// $result = $aumTable->sql($sql); ??
Run Code Online (Sandbox Code Playgroud)
如果您可以提供CakePHP 3模型文档的链接,我可以在其中找到此信息,这也会有所帮助.我尝试在谷歌上搜索,但只能找到与CakePHP 2相关的问题.
当前使用的PHP代码是:
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Type: application/octet-stream");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($file));
header("Content-Disposition: attachment; filename=\"" . basename($file) . "\"");
header($_SERVER["SERVER_PROTOCOL"] . " 200 OK");
ob_clean();
flush();
readfile($file);
Run Code Online (Sandbox Code Playgroud)
但是当我下载一些文件时,网站就会停止运行.浏览器正在发送请求但它没有从服务器获得任何响应.它们处于挂起模式,直到下载完成,但一旦下载完成,服务器就会发送响应并且网站会再次开始运行.你能为此解决一下吗?