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;
}
8431 次
3 に答える
3
EchoSqlLogger
Haim Evgiによって提案されたように、まあ、ログ出力をエコーするので、あなたはそれをあなたのウェブサイトで見るべきです。
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(または使用するdb)クエリログを有効にすることです(負荷の高い本番サーバーではこれを行わないでください!)。
クエリログが下/var/log/mysql/query.log
にある場合は、次のようにします。
# tail -f /var/log/mysql/query.log
(詳細については、 tailコマンドを参照してください)
そして、クエリを実行するページをリロードします。
于 2011-09-12T19:50:38.957 に答える
3
教義 2.3.2 で
use Doctrine\DBAL\Logging\DebugStack;
$logger = new DebugStack();
$config->setSQLLogger($logger);
print_r($logger); で $logger を印刷できるようになりました。
于 2013-01-27T21:40:52.640 に答える
0
//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: SELECT tbl.id AS id0 FROM mytable tbl WHERE tbl.id = ?
パラメータ: ID | 1 | 整数
于 2013-02-21T14:40:59.480 に答える