Как вы просматриваете подготовленный DQL-запрос во время выполнения? - PullRequest
2 голосов
/ 07 сентября 2011
function get_event($id){
            $query = $this->em->createQuery('SELECT e.name,e.date, e.time, e.venue, e.venueaddress,e.parish,e.genre, e.entryprice, e.phone, e.specialguests,
                                            e.weblink, e.otherinfo, e.flyer1, e.flyer2 from Events e WHERE e.id = :id');
            $query->setParameter('id', $id);


//CAN I VIEW THE QUERY AT THIS TIME?


            $result = $query->getResult();    
            return $result;    
        }

Ответы [ 3 ]

3 голосов
/ 28 января 2013

В доктрине 2.3.2

use Doctrine\DBAL\Logging\DebugStack;
$logger = new DebugStack();
$config->setSQLLogger($logger);

теперь вы можете напечатать $ logger с print_r ($ logger);

3 голосов
/ 12 сентября 2011

EchoSqlLogger в соответствии с предложением Хаима Эджи, ну, эхо выводит журнал, так что вы должны увидеть его на своем сайте.

Если вы просто хотите посмотреть, что сгенерирует Doctrine для SQL-запроса, используйте:

$query = $this->em->createQuery('SELECT e.name,e.date, e.time, e.venue, e.venueaddress,e.parish,e.genre, e.entryprice, e.phone, e.specialguests,
                                        e.weblink, e.otherinfo, e.flyer1, e.flyer2 from Events e WHERE e.id = :id');

print $query->getSQL();

Но учтите, что параметры не включены в эту строку sql, они отображаются как заполнители (=?).

Самым распространенным методом, который я использую для наблюдения за тем, что делает Doctrine, является включение mysql (или любой используемой вами базы данных) журнал запросов (не делайте этого на рабочем сервере, который находится под большой нагрузкой!) ,

Если журнал запросов находится под /var/log/mysql/query.log, я просто делаю это:

# tail -f /var/log/mysql/query.log

(подробнее см. команда tail )

И перезагрузите страницу, которая выполняет запрос.

0 голосов
/ 21 февраля 2013
//create query
$oQuery = $this->em->createQuery('SELECT tbl.id FROM mytable tbl WHERE tbl.id = :id');

//print query and params
echo "SQL: ".$oQuery->getSQL();
while($param = $oQuery->getParameters()->current()){
  echo "Param: ".$param->getName()." | ".$param->getValue()." | ".$param->getType();
  $oQuery->getParameters()->next();
}

SQL: ВЫБЕРИТЕ tbl.id КАК id0 ИЗ mytable tbl ГДЕ tbl.id =?

Параметр: id |1 |целое число

...