如何编译Propel Criteria以清除sql?
我试过$criteria-> toString();但这不是我的预期.
我也尝试了ModelPeer :: doSelectStmt($criteria)但它返回了原始的sql(必需的参数替换)
我试过$criteria-> toString();但这不是我的预期.
我也尝试了ModelPeer :: doSelectStmt($criteria)但它返回了原始的sql(必需的参数替换)
首先,重要的是要注意Propel将PDO与预处理语句一起使用,因此您不会在
PHP中获得完全“内置”的sql语句.使用Criteria-> toString()是一个很好的开始,但正如Peter提到的那样,很多工作确实由BasePeer :: createSelectsql()方法完成.
这是最完整的方法(来自Propel),看看sql的外观(带占位符)和将被替换的参数:
$params = array(); // This will be filled with the parameters $sql = BasePeer::createSelectsql($criteria,$params); print "The raw sql: " . $sql . "\n"; print "The parameters: " . print_r($params,true) . "\n";
请注意,只需在数据库级别记录查询,您就可以获得更好的里程.当然,如果PDO配置(或支持)使用本机db预处理语句,那么您可能仍然会在db中看到占位符.