public function getStm(ModelCriteria $query, Condition $condition = null)
{
$params = [];
$condition2Params = [];
$id = hexdec(uniqid()) / mt_rand() + mt_rand();
// check that the columns of the main class are already added (if this is the primary ModelCriteria)
if (!$query->hasSelectClause() && !$query->getPrimaryCriteria()) {
$query->addSelfSelectColumns();
}
$con = RuntimePropel::getServiceContainer()->getReadConnection($query->getDbName());
$query->configureSelectColumns();
$dbMap = RuntimePropel::getServiceContainer()->getDatabaseMap($query->getDbName());
$db = RuntimePropel::getServiceContainer()->getAdapter($query->getDbName());
$model = $query->getModelName();
$tableMap = constant($model . '::TABLE_MAP');
$query->setPrimaryTableName(constant($tableMap . '::TABLE_NAME'));
// $query->find($con);
if ($condition) {
$query->where($id . ' = ' . $id);
}
$sql = $query->createSelectSql($params);
$conditionSql = '';
if ($condition) {
$condition2Params = $params;
$conditionSql = $this->conditionOperator->standardConditionToSql($condition, $condition2Params, $this->getObjectKey());
}
if ($condition && $conditionSql) {
$sql = str_replace($id . ' = ' . $id, '(' . $conditionSql . ')', $sql);
}
/** @var \PDOStatement $stmt */
try {
$stmt = $con->prepare($sql);
} catch (\PDOException $e) {
throw new PropelException('Could not execute query ' . $sql, 0, $e);
}
$db->bindValues($stmt, $params, $dbMap);
if ($condition2Params) {
foreach ($condition2Params as $idx => $v) {
if (!is_array($v)) {
//propel uses arrays as bind values, we with Condition->toSql not.
$stmt->bindValue($idx, $v);
}
}
}
try {
$stmt->execute();
} catch (\PDOException $e) {
throw new \PDOException($e->getMessage() . "\nSQL: {$sql}");
}
return $stmt;
}