如何将Propel Criteria编译为SQL

6 php sql propel criteria

如何编译Propel Criteria以清除SQL?我试过$ criteria-> toString(); 但这不是我的预期.我也尝试了ModelPeer :: doSelectStmt($ criteria)但它返回了原始的sql(必需的参数替换)

Han*_*s L 12

首先,重要的是要注意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";
Run Code Online (Sandbox Code Playgroud)

请注意,只需在数据库级别记录查询,您就可以获得更好的里程.当然,如果PDO配置(或支持)使用本机db预处理语句,那么您可能仍然会在db中看到占位符.


Pet*_*ley 2

我相信这就是方法

$rawSql = BasePeer::createSelectSql( $criteria, $params );
Run Code Online (Sandbox Code Playgroud)