There are situations when using phql is not the preferred, but using query builder is useful. There seem to be no way of getting native sql out of it. The closest I got to is described in https://github.com/phalcon/cphalcon/issues/1905#issuecomment-33292399, however that doesn't cover all scenarios.
Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.
This is implemented in 2.0.3
<?php
namespace Some;
use Phalcon\DI,
Phalcon\Db\Column,
Phalcon\Mvc\Model,
Phalcon\Events\Manager as EventsManager,
Phalcon\Db\Adapter\Pdo\MySQL as Connection,
Phalcon\Mvc\Model\Manager as ModelsManager,
Phalcon\Mvc\Model\Metadata\Memory as ModelsMetaData;
$eventsManager = new EventsManager();
$di = new DI();
$connection = new Connection(array(
"host" => "localhost",
"username" => "root",
"password" => "",
"dbname" => "phalcon_test",
));
$connection->setEventsManager($eventsManager);
$eventsManager->attach('db',
function ($event, $connection) {
switch ($event->getType()) {
case 'beforeQuery':
echo $connection->getSqlStatement(), "\n";
break;
}
}
);
$modelsManager = new ModelsManager();
$modelsManager->setDi($di);
$di['db'] = $connection;
$di['modelsManager'] = $modelsManager;
$di['modelsMetadata'] = new ModelsMetadata();
class Robots extends Model
{
}
print_r($modelsManager->createBuilder()
->from('Some\Robots')
->getQuery()
->getSql());
Most helpful comment
This is implemented in 2.0.3