【问题标题】:print last executed query in controller cakephp 3在控制器 cakephp 3 中打印最后执行的查询
【发布时间】:2017-01-05 18:58:43
【问题描述】:

假设我在 cakephp 3 中有一个查询

$post = $this->Posts->get($id, [
        'contain' => ['Postmeta']
    ]);

例如,我想像普通的 mysql 查询一样打印它

SELECT * FROM posts....

谁能解释一下我如何才能做到这一点。请仅在 cakephp 3 环境中回答。是否可以像普通的 mysql 查询一样在控制器中打印它?请不要提及querys.log 文件解决方案。因为在 query.log 文件中的每个执行查询之后打开文件并查看查询是需要时间的,这是 cakephp 样式 谢谢

【问题讨论】:

  • @bill 我看到了该解决方案,但 query.log 文件以 cakephp 样式显示查询。我想像 SELECT * FROM 帖子这样的普通 mysql 查询一样打印它。我还想在我的控制器文件上看到它。有可能吗?
  • 有几种方法可以在执行之前打印 sql。我认为您在执行后需要它吗?
  • 是的@ManoharKhadka

标签: cakephp-3.0


【解决方案1】:

在Controller中,我们需要在查询代码后写两行如下

$post = $this->Posts->get($id, [
   'contain' => ['Postmeta']
]);
echo "<pre>";
print_r(debug($post));die; 

它将显示所有结果以及 sql 查询语法。

这里我们使用debug 与sql 查询一起显示结果。

【讨论】:

    【解决方案2】:

    查询:

    $post = $this->Posts->get($id, [
        'contain' => ['Postmeta']
    ]);
    

    对于上述查询的打印/获取 SQL 语句,您可以在控制器中使用debug() 函数,如下所示:

    $post = $this->Posts->get($id, [
        'contain' => ['Postmeta']
    ]);
    debug($post);
    

    【讨论】:

      【解决方案3】:

      只写:

      die(print_r($post));
      

      【讨论】:

        猜你喜欢
        • 2015-12-01
        • 2016-05-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-30
        • 2023-03-16
        • 2022-01-03
        • 1970-01-01
        相关资源
        最近更新 更多