【问题标题】:Is there any way to output the sql generated by a propel select in symfony?有什么方法可以输出symfony中propel select生成的sql吗?
【发布时间】:2009-11-02 15:47:48
【问题描述】:

我想输出 symfony propel select 生成的查询以进行测试。有没有办法做到这一点?我知道我可以使用 sf_debug 栏,但有时我需要在 sf_debug 栏尚未加载或根本不会加载的情况下查看语句。

【问题讨论】:

    标签: symfony1 propel


    【解决方案1】:

    Timmow 是对的,有一个 Criteria::toString() 方法,但它不是在将对象作为字符串引用时自动调用的神奇的 _toString() 方法。

    如果您想查看 SQL,您必须显式调用 Criteria::toString()

    $c = new Criteria();
    // HERE: add criteria
    // what's it do?
    echo $c->toString(); // oh, that's what it does
    

    【讨论】:

    • 有趣 - 它“排序”有效 - 我为我正在处理的页面获得此输出:条件:SQL(可能不完整):从 ugc_question.LAST_RESPONSE_AT DESC 参数中选择:
    • 另外,上面的代码 sn-p 应该是 echo $c->toString(); // 哦... (不是 $c->getString(); )
    【解决方案2】:

    Propel Criteria 对象有一个toString 方法,因此您应该能够简单地将您感兴趣的条件对象 echo / var_dump / log 到文件中

    【讨论】:

      【解决方案3】:

      查看 Jobeet 教程的第 6 天,Debugging Propel generated SQL 也可能会有所帮助。如果您在调试环境中,原始查询将输出到日志文件。不是 100% 确定,因为我使用 Doctrine。

      【讨论】:

        【解决方案4】:

        您将在建立条件后以这种方式获得生成的 SQL 语句:

            $params= array();
            $resulting_sql_statement = BasePeer::createSelectSql($criteria,$params);
        

        【讨论】:

          猜你喜欢
          • 2015-06-25
          • 2014-08-14
          • 2020-03-06
          • 1970-01-01
          • 1970-01-01
          • 2012-01-29
          • 2011-09-22
          • 2012-11-30
          • 1970-01-01
          相关资源
          最近更新 更多