| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 | 
							- <?php
 - 
 - /*
 -  * This file is part of the Doctrine Bundle
 -  *
 -  * The code was originally distributed inside the Symfony framework.
 -  *
 -  * (c) Fabien Potencier <fabien@symfony.com>
 -  * (c) Doctrine Project, Benjamin Eberlei <kontakt@beberlei.de>
 -  *
 -  * For the full copyright and license information, please view the LICENSE
 -  * file that was distributed with this source code.
 -  */
 - 
 - namespace Doctrine\Bundle\DoctrineBundle\Controller;
 - 
 - use Symfony\Component\DependencyInjection\ContainerAware;
 - use Symfony\Component\HttpFoundation\Response;
 - 
 - /**
 -  * ProfilerController.
 -  *
 -  * @author Christophe Coevoet <stof@notk.org>
 -  */
 - class ProfilerController extends ContainerAware
 - {
 -     /**
 -      * Renders the profiler panel for the given token.
 -      *
 -      * @param string $token The profiler token
 -      * @param string $connectionName
 -      * @param integer $query
 -      *
 -      * @return Response A Response instance
 -      */
 -     public function explainAction($token, $connectionName, $query)
 -     {
 -         /** @var $profiler \Symfony\Component\HttpKernel\Profiler\Profiler */
 -         $profiler = $this->container->get('profiler');
 -         $profiler->disable();
 - 
 -         $profile = $profiler->loadProfile($token);
 -         $queries = $profile->getCollector('db')->getQueries();
 - 
 -         if (!isset($queries[$connectionName][$query])) {
 -             return new Response('This query does not exist.');
 -         }
 - 
 -         $query = $queries[$connectionName][$query];
 -         if (!$query['explainable']) {
 -             return new Response('This query cannot be explained.');
 -         }
 - 
 -         /** @var $connection \Doctrine\DBAL\Connection */
 -         $connection = $this->container->get('doctrine')->getConnection($connectionName);
 -         try {
 -             $results = $connection->executeQuery('EXPLAIN '.$query['sql'], $query['params'], $query['types'])
 -                 ->fetchAll(\PDO::FETCH_ASSOC);
 -         } catch (\Exception $e) {
 -             return new Response('This query cannot be explained.');
 -         }
 - 
 -         return $this->container->get('templating')->renderResponse('DoctrineBundle:Collector:explain.html.twig', array(
 -             'data' => $results,
 -             'query' => $query,
 -         ));
 -     }
 - }
 
 
  |