1686 lines
88 KiB
PHP
1686 lines
88 KiB
PHP
<?php
|
|
|
|
use Twig\Environment;
|
|
use Twig\Error\LoaderError;
|
|
use Twig\Error\RuntimeError;
|
|
use Twig\Markup;
|
|
use Twig\Sandbox\SecurityError;
|
|
use Twig\Sandbox\SecurityNotAllowedTagError;
|
|
use Twig\Sandbox\SecurityNotAllowedFilterError;
|
|
use Twig\Sandbox\SecurityNotAllowedFunctionError;
|
|
use Twig\Source;
|
|
use Twig\Template;
|
|
|
|
/* @Doctrine/Collector/db.html.twig */
|
|
class __TwigTemplate_032e84d08b3e841d315274b6f85247248eeeae18a19d2b97ea3b18bcf06c9757 extends \Twig\Template
|
|
{
|
|
public function __construct(Environment $env)
|
|
{
|
|
parent::__construct($env);
|
|
|
|
$this->blocks = [
|
|
'toolbar' => [$this, 'block_toolbar'],
|
|
'menu' => [$this, 'block_menu'],
|
|
'panel' => [$this, 'block_panel'],
|
|
'queries' => [$this, 'block_queries'],
|
|
];
|
|
}
|
|
|
|
protected function doGetParent(array $context)
|
|
{
|
|
// line 1
|
|
return $this->loadTemplate((($this->getAttribute(($context["request"] ?? $this->getContext($context, "request")), "isXmlHttpRequest", [])) ? ("@WebProfiler/Profiler/ajax_layout.html.twig") : ("@WebProfiler/Profiler/layout.html.twig")), "@Doctrine/Collector/db.html.twig", 1);
|
|
}
|
|
|
|
protected function doDisplay(array $context, array $blocks = [])
|
|
{
|
|
$__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension");
|
|
$__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->enter($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "@Doctrine/Collector/db.html.twig"));
|
|
|
|
$__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension");
|
|
$__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->enter($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "@Doctrine/Collector/db.html.twig"));
|
|
|
|
// line 3
|
|
$context["helper"] = $this;
|
|
// line 1
|
|
$this->getParent($context)->display($context, array_merge($this->blocks, $blocks));
|
|
|
|
$__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->leave($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof);
|
|
|
|
|
|
$__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->leave($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof);
|
|
|
|
}
|
|
|
|
// line 5
|
|
public function block_toolbar($context, array $blocks = [])
|
|
{
|
|
$__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension");
|
|
$__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->enter($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "toolbar"));
|
|
|
|
$__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension");
|
|
$__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->enter($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "toolbar"));
|
|
|
|
// line 6
|
|
echo " ";
|
|
if ((($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "querycount", []) > 0) || ($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "invalidEntityCount", []) > 0))) {
|
|
// line 7
|
|
echo "
|
|
";
|
|
// line 8
|
|
$context["profiler_markup_version"] = (((isset($context["profiler_markup_version"]) || array_key_exists("profiler_markup_version", $context))) ? (_twig_default_filter(($context["profiler_markup_version"] ?? $this->getContext($context, "profiler_markup_version")), 1)) : (1));
|
|
// line 9
|
|
echo "
|
|
";
|
|
// line 10
|
|
ob_start();
|
|
// line 11
|
|
echo " ";
|
|
if ((($context["profiler_markup_version"] ?? $this->getContext($context, "profiler_markup_version")) == 1)) {
|
|
// line 12
|
|
echo "
|
|
<img width=\"20\" height=\"28\" alt=\"Database\" src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAcCAYAAABh2p9gAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQRJREFUeNpi/P//PwM1ARMDlcGogZQDlpMnT7pxc3NbA9nhQKxOpL5rQLwJiPeBsI6Ozl+YBOOOHTv+AOllQNwtLS39F2owKYZ/gRq8G4i3ggxEToggWzvc3d2Pk+1lNL4fFAs6ODi8JzdS7mMRVyDVoAMHDsANdAPiOCC+jCQvQKqBQB/BDbwBxK5AHA3E/kB8nKJkA8TMQBwLxaBIKQbi70AvTADSBiSadwFXpCikpKQU8PDwkGTaly9fHFigkaKIJid4584dkiMFFI6jkTJII0WVmpHCAixZQEXWYhDeuXMnyLsVlEQKI45qFBQZ8eRECi4DBaAlDqle/8A48ip6gAADANdQY88Uc0oGAAAAAElFTkSuQmCC\" />
|
|
<span class=\"sf-toolbar-value sf-toolbar-status ";
|
|
// line 14
|
|
if (($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "querycount", []) > 50)) {
|
|
echo "sf-toolbar-status-yellow";
|
|
}
|
|
echo "\">";
|
|
echo twig_escape_filter($this->env, $this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "querycount", []), "html", null, true);
|
|
echo "</span>
|
|
";
|
|
// line 15
|
|
if (($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "querycount", []) > 0)) {
|
|
// line 16
|
|
echo " <span class=\"sf-toolbar-info-piece-additional-detail\">in ";
|
|
echo twig_escape_filter($this->env, sprintf("%0.2f", ($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "time", []) * 1000)), "html", null, true);
|
|
echo " ms</span>
|
|
";
|
|
}
|
|
// line 18
|
|
echo " ";
|
|
if (($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "invalidEntityCount", []) > 0)) {
|
|
// line 19
|
|
echo " <span class=\"sf-toolbar-info-piece-additional sf-toolbar-status sf-toolbar-status-red\">";
|
|
echo twig_escape_filter($this->env, $this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "invalidEntityCount", []), "html", null, true);
|
|
echo "</span>
|
|
";
|
|
}
|
|
// line 21
|
|
echo "
|
|
";
|
|
} else {
|
|
// line 23
|
|
echo "
|
|
";
|
|
// line 24
|
|
$context["status"] = ((($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "invalidEntityCount", []) > 0)) ? ("red") : (((($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "querycount", []) > 50)) ? ("yellow") : (""))));
|
|
// line 25
|
|
echo "
|
|
";
|
|
// line 26
|
|
echo twig_include($this->env, $context, "@Doctrine/Collector/icon.svg");
|
|
echo "
|
|
|
|
";
|
|
// line 28
|
|
if ((($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "querycount", []) == 0) && ($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "invalidEntityCount", []) > 0))) {
|
|
// line 29
|
|
echo " <span class=\"sf-toolbar-value\">";
|
|
echo twig_escape_filter($this->env, $this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "invalidEntityCount", []), "html", null, true);
|
|
echo "</span>
|
|
<span class=\"sf-toolbar-label\">errors</span>
|
|
";
|
|
} else {
|
|
// line 32
|
|
echo " <span class=\"sf-toolbar-value\">";
|
|
echo twig_escape_filter($this->env, $this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "querycount", []), "html", null, true);
|
|
echo "</span>
|
|
<span class=\"sf-toolbar-info-piece-additional-detail\">
|
|
<span class=\"sf-toolbar-label\">in</span>
|
|
<span class=\"sf-toolbar-value\">";
|
|
// line 35
|
|
echo twig_escape_filter($this->env, sprintf("%0.2f", ($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "time", []) * 1000)), "html", null, true);
|
|
echo "</span>
|
|
<span class=\"sf-toolbar-label\">ms</span>
|
|
</span>
|
|
";
|
|
}
|
|
// line 39
|
|
echo "
|
|
";
|
|
}
|
|
// line 41
|
|
echo " ";
|
|
$context["icon"] = ('' === $tmp = ob_get_clean()) ? '' : new Markup($tmp, $this->env->getCharset());
|
|
// line 42
|
|
echo "
|
|
";
|
|
// line 43
|
|
ob_start();
|
|
// line 44
|
|
echo " <div class=\"sf-toolbar-info-piece\">
|
|
<b>Database Queries</b>
|
|
<span class=\"sf-toolbar-status ";
|
|
// line 46
|
|
echo ((($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "querycount", []) > 50)) ? ("sf-toolbar-status-yellow") : (""));
|
|
echo "\">";
|
|
echo twig_escape_filter($this->env, $this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "querycount", []), "html", null, true);
|
|
echo "</span>
|
|
</div>
|
|
<div class=\"sf-toolbar-info-piece\">
|
|
<b>Query time</b>
|
|
<span>";
|
|
// line 50
|
|
echo twig_escape_filter($this->env, sprintf("%0.2f", ($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "time", []) * 1000)), "html", null, true);
|
|
echo " ms</span>
|
|
</div>
|
|
<div class=\"sf-toolbar-info-piece\">
|
|
<b>Invalid entities</b>
|
|
<span class=\"sf-toolbar-status ";
|
|
// line 54
|
|
echo ((($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "invalidEntityCount", []) > 0)) ? ("sf-toolbar-status-red") : (""));
|
|
echo "\">";
|
|
echo twig_escape_filter($this->env, $this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "invalidEntityCount", []), "html", null, true);
|
|
echo "</span>
|
|
</div>
|
|
";
|
|
// line 56
|
|
if ($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "cacheEnabled", [])) {
|
|
// line 57
|
|
echo " <div class=\"sf-toolbar-info-piece\">
|
|
<b>Cache hits</b>
|
|
<span class=\"sf-toolbar-status sf-toolbar-status-green\">";
|
|
// line 59
|
|
echo twig_escape_filter($this->env, $this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "cacheHitsCount", []), "html", null, true);
|
|
echo "</span>
|
|
</div>
|
|
<div class=\"sf-toolbar-info-piece\">
|
|
<b>Cache misses</b>
|
|
<span class=\"sf-toolbar-status ";
|
|
// line 63
|
|
echo ((($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "cacheMissesCount", []) > 0)) ? ("sf-toolbar-status-yellow") : (""));
|
|
echo "\">";
|
|
echo twig_escape_filter($this->env, $this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "cacheMissesCount", []), "html", null, true);
|
|
echo "</span>
|
|
</div>
|
|
<div class=\"sf-toolbar-info-piece\">
|
|
<b>Cache puts</b>
|
|
<span class=\"sf-toolbar-status ";
|
|
// line 67
|
|
echo ((($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "cachePutsCount", []) > 0)) ? ("sf-toolbar-status-yellow") : (""));
|
|
echo "\">";
|
|
echo twig_escape_filter($this->env, $this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "cachePutsCount", []), "html", null, true);
|
|
echo "</span>
|
|
</div>
|
|
";
|
|
} else {
|
|
// line 70
|
|
echo " <div class=\"sf-toolbar-info-piece\">
|
|
<b>Second Level Cache</b>
|
|
<span class=\"sf-toolbar-status\">disabled</span>
|
|
</div>
|
|
";
|
|
}
|
|
// line 75
|
|
echo " ";
|
|
$context["text"] = ('' === $tmp = ob_get_clean()) ? '' : new Markup($tmp, $this->env->getCharset());
|
|
// line 76
|
|
echo "
|
|
";
|
|
// line 77
|
|
echo twig_include($this->env, $context, "@WebProfiler/Profiler/toolbar_item.html.twig", ["link" => ($context["profiler_url"] ?? $this->getContext($context, "profiler_url")), "status" => (((isset($context["status"]) || array_key_exists("status", $context))) ? (_twig_default_filter(($context["status"] ?? $this->getContext($context, "status")), "")) : (""))]);
|
|
echo "
|
|
|
|
";
|
|
}
|
|
|
|
$__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->leave($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof);
|
|
|
|
|
|
$__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->leave($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof);
|
|
|
|
}
|
|
|
|
// line 82
|
|
public function block_menu($context, array $blocks = [])
|
|
{
|
|
$__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension");
|
|
$__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->enter($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "menu"));
|
|
|
|
$__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension");
|
|
$__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->enter($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "menu"));
|
|
|
|
// line 83
|
|
echo " ";
|
|
$context["profiler_markup_version"] = (((isset($context["profiler_markup_version"]) || array_key_exists("profiler_markup_version", $context))) ? (_twig_default_filter(($context["profiler_markup_version"] ?? $this->getContext($context, "profiler_markup_version")), 1)) : (1));
|
|
// line 84
|
|
echo "
|
|
";
|
|
// line 85
|
|
if ((($context["profiler_markup_version"] ?? $this->getContext($context, "profiler_markup_version")) == 1)) {
|
|
// line 86
|
|
echo "
|
|
<span class=\"label\">
|
|
<span class=\"icon\"><img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAcCAYAAAB/E6/TAAABLUlEQVR42u3TP0vDQBiA8UK/gDiLzi0IhU4OEunk5OQUAhGSOBUCzqWfIKSzX8DRySF0URCcMjWLIJjFD9Cpk/D6HITecEPUuzhIAz8CIdyTP/f2iqI4qaqqDx8l5Ic2uIeP/bquezCokOAFF+oCN3t4gPzSEjc4NEPaCldQbzjELTYW0RJzHDchwwem+ons6ZBpLSJ7nueJC22h0V+FzmwWV0ee59vQNV67CGVZJmEYbkNjfpY6X6I0Qo4/3RMmTdDDspuQVsJvgkP3IdMbIkIjLPBoadG2646iKJI0Ta2wxm6OdnP0/Tk6DYJgHcfxpw21RtscDTDDnaVZ26474GkkSRIrrPEv5sgMTfHe+cA2O6wPH6vOBpYQNALneHb96XTEDI6dzpEZ0VzO0Rf3pP5LMLI4tAAAAABJRU5ErkJggg==\" alt=\"\" /></span>
|
|
<strong>Doctrine</strong>
|
|
<span class=\"count\">
|
|
<span>";
|
|
// line 91
|
|
echo twig_escape_filter($this->env, $this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "querycount", []), "html", null, true);
|
|
echo "</span>
|
|
<span>";
|
|
// line 92
|
|
echo twig_escape_filter($this->env, sprintf("%0.0f", ($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "time", []) * 1000)), "html", null, true);
|
|
echo " ms</span>
|
|
</span>
|
|
</span>
|
|
|
|
";
|
|
} else {
|
|
// line 97
|
|
echo "
|
|
<span class=\"label ";
|
|
// line 98
|
|
echo ((($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "invalidEntityCount", []) > 0)) ? ("label-status-error") : (""));
|
|
echo " ";
|
|
echo ((($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "querycount", []) == 0)) ? ("disabled") : (""));
|
|
echo "\">
|
|
<span class=\"icon\">";
|
|
// line 99
|
|
echo twig_include($this->env, $context, "@Doctrine/Collector/icon.svg");
|
|
echo "</span>
|
|
<strong>Doctrine</strong>
|
|
";
|
|
// line 101
|
|
if ($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "invalidEntityCount", [])) {
|
|
// line 102
|
|
echo " <span class=\"count\">
|
|
<span>";
|
|
// line 103
|
|
echo twig_escape_filter($this->env, $this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "invalidEntityCount", []), "html", null, true);
|
|
echo "</span>
|
|
</span>
|
|
";
|
|
}
|
|
// line 106
|
|
echo " </span>
|
|
|
|
";
|
|
}
|
|
|
|
$__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->leave($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof);
|
|
|
|
|
|
$__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->leave($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof);
|
|
|
|
}
|
|
|
|
// line 111
|
|
public function block_panel($context, array $blocks = [])
|
|
{
|
|
$__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension");
|
|
$__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->enter($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "panel"));
|
|
|
|
$__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension");
|
|
$__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->enter($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "panel"));
|
|
|
|
// line 112
|
|
echo " ";
|
|
$context["profiler_markup_version"] = (((isset($context["profiler_markup_version"]) || array_key_exists("profiler_markup_version", $context))) ? (_twig_default_filter(($context["profiler_markup_version"] ?? $this->getContext($context, "profiler_markup_version")), 1)) : (1));
|
|
// line 113
|
|
echo "
|
|
";
|
|
// line 114
|
|
if (("explain" == ($context["page"] ?? $this->getContext($context, "page")))) {
|
|
// line 115
|
|
echo " ";
|
|
echo $this->env->getRuntime('Symfony\Bridge\Twig\Extension\HttpKernelRuntime')->renderFragment(Symfony\Bridge\Twig\Extension\HttpKernelExtension::controller("DoctrineBundle:Profiler:explain", ["token" => // line 116
|
|
($context["token"] ?? $this->getContext($context, "token")), "panel" => "db", "connectionName" => $this->getAttribute($this->getAttribute( // line 118
|
|
($context["request"] ?? $this->getContext($context, "request")), "query", []), "get", [0 => "connection"], "method"), "query" => $this->getAttribute($this->getAttribute( // line 119
|
|
($context["request"] ?? $this->getContext($context, "request")), "query", []), "get", [0 => "query"], "method")]));
|
|
// line 120
|
|
echo "
|
|
";
|
|
} else {
|
|
// line 122
|
|
echo " ";
|
|
$this->displayBlock("queries", $context, $blocks);
|
|
echo "
|
|
";
|
|
}
|
|
|
|
$__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->leave($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof);
|
|
|
|
|
|
$__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->leave($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof);
|
|
|
|
}
|
|
|
|
// line 126
|
|
public function block_queries($context, array $blocks = [])
|
|
{
|
|
$__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension");
|
|
$__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->enter($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "queries"));
|
|
|
|
$__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension");
|
|
$__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->enter($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "queries"));
|
|
|
|
// line 127
|
|
echo " <style>
|
|
";
|
|
// line 128
|
|
if ((($context["profiler_markup_version"] ?? $this->getContext($context, "profiler_markup_version")) == 1)) {
|
|
// line 129
|
|
echo " .hidden { display: none; }
|
|
.queries-table td, .queries-table th { vertical-align: top; }
|
|
.queries-table td > div { margin-bottom: 6px; }
|
|
.highlight pre { margin: 0; white-space: pre-wrap; }
|
|
.highlight .keyword { color: #8959A8; font-weight: bold; }
|
|
.highlight .word { color: #222222; }
|
|
.highlight .variable { color: #916319; }
|
|
.highlight .symbol { color: #222222; }
|
|
.highlight .comment { color: #999999; }
|
|
.highlight .backtick { color: #718C00; }
|
|
.highlight .string { color: #718C00; }
|
|
.highlight .number { color: #F5871F; font-weight: bold; }
|
|
.highlight .error { color: #C82829; }
|
|
";
|
|
}
|
|
// line 143
|
|
echo "
|
|
.time-container { position: relative; }
|
|
.time-container .nowrap { position: relative; z-index: 1; text-shadow: 0 0 2px #fff; }
|
|
.time-bar { display: block; position: absolute; top: 0; left: 0; bottom: 0; background: #e0e0e0; }
|
|
</style>
|
|
|
|
";
|
|
// line 149
|
|
if ((($context["profiler_markup_version"] ?? $this->getContext($context, "profiler_markup_version")) > 1)) {
|
|
// line 150
|
|
echo " <h2>Query Metrics</h2>
|
|
|
|
<div class=\"metrics\">
|
|
<div class=\"metric\">
|
|
<span class=\"value\">";
|
|
// line 154
|
|
echo twig_escape_filter($this->env, $this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "querycount", []), "html", null, true);
|
|
echo "</span>
|
|
<span class=\"label\">Database Queries</span>
|
|
</div>
|
|
|
|
<div class=\"metric\">
|
|
<span class=\"value\">";
|
|
// line 159
|
|
echo twig_escape_filter($this->env, $this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "groupedQueryCount", []), "html", null, true);
|
|
echo "</span>
|
|
<span class=\"label\">Different statements</span>
|
|
</div>
|
|
|
|
<div class=\"metric\">
|
|
<span class=\"value\">";
|
|
// line 164
|
|
echo twig_escape_filter($this->env, sprintf("%0.2f", ($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "time", []) * 1000)), "html", null, true);
|
|
echo " ms</span>
|
|
<span class=\"label\">Query time</span>
|
|
</div>
|
|
|
|
<div class=\"metric\">
|
|
<span class=\"value\">";
|
|
// line 169
|
|
echo twig_escape_filter($this->env, $this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "invalidEntityCount", []), "html", null, true);
|
|
echo "</span>
|
|
<span class=\"label\">Invalid entities</span>
|
|
</div>
|
|
|
|
";
|
|
// line 173
|
|
if ($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "cacheEnabled", [])) {
|
|
// line 174
|
|
echo " <div class=\"metric\">
|
|
\t<span class=\"value\">";
|
|
// line 175
|
|
echo twig_escape_filter($this->env, $this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "cacheHitsCount", []), "html", null, true);
|
|
echo "</span>
|
|
\t<span class=\"label\">Cache hits</span>
|
|
</div>
|
|
<div class=\"metric\">
|
|
\t<span class=\"value\">";
|
|
// line 179
|
|
echo twig_escape_filter($this->env, $this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "cacheMissesCount", []), "html", null, true);
|
|
echo "</span>
|
|
\t<span class=\"label\">Cache misses</span>
|
|
</div>
|
|
<div class=\"metric\">
|
|
\t<span class=\"value\">";
|
|
// line 183
|
|
echo twig_escape_filter($this->env, $this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "cachePutsCount", []), "html", null, true);
|
|
echo "</span>
|
|
\t<span class=\"label\">Cache puts</span>
|
|
</div>
|
|
";
|
|
}
|
|
// line 187
|
|
echo " </div>
|
|
";
|
|
}
|
|
// line 189
|
|
echo "
|
|
";
|
|
// line 190
|
|
$context["group_queries"] = $this->getAttribute($this->getAttribute(($context["request"] ?? $this->getContext($context, "request")), "query", []), "getBoolean", [0 => "group"], "method");
|
|
// line 191
|
|
echo " ";
|
|
if (($context["group_queries"] ?? $this->getContext($context, "group_queries"))) {
|
|
// line 192
|
|
echo " <h2>Grouped Statements</h2>
|
|
<p><a href=\"";
|
|
// line 193
|
|
echo twig_escape_filter($this->env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("_profiler", ["panel" => "db", "token" => ($context["token"] ?? $this->getContext($context, "token"))]), "html", null, true);
|
|
echo "\">Show all queries</a></p>
|
|
";
|
|
} else {
|
|
// line 195
|
|
echo " <h2>Queries</h2>
|
|
<p><a href=\"";
|
|
// line 196
|
|
echo twig_escape_filter($this->env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("_profiler", ["panel" => "db", "token" => ($context["token"] ?? $this->getContext($context, "token")), "group" => true]), "html", null, true);
|
|
echo "\">Group similar statements</a></p>
|
|
";
|
|
}
|
|
// line 198
|
|
echo "
|
|
";
|
|
// line 199
|
|
$context['_parent'] = $context;
|
|
$context['_seq'] = twig_ensure_traversable($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "queries", []));
|
|
$context['loop'] = [
|
|
'parent' => $context['_parent'],
|
|
'index0' => 0,
|
|
'index' => 1,
|
|
'first' => true,
|
|
];
|
|
if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
|
|
$length = count($context['_seq']);
|
|
$context['loop']['revindex0'] = $length - 1;
|
|
$context['loop']['revindex'] = $length;
|
|
$context['loop']['length'] = $length;
|
|
$context['loop']['last'] = 1 === $length;
|
|
}
|
|
foreach ($context['_seq'] as $context["connection"] => $context["queries"]) {
|
|
// line 200
|
|
echo " ";
|
|
if ((twig_length_filter($this->env, $this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "connections", [])) > 1)) {
|
|
// line 201
|
|
echo " <h3>";
|
|
echo twig_escape_filter($this->env, $context["connection"], "html", null, true);
|
|
echo " <small>connection</small></h3>
|
|
";
|
|
}
|
|
// line 203
|
|
echo "
|
|
";
|
|
// line 204
|
|
if (twig_test_empty($context["queries"])) {
|
|
// line 205
|
|
echo " <div class=\"empty\">
|
|
<p>No database queries were performed.</p>
|
|
</div>
|
|
";
|
|
} else {
|
|
// line 209
|
|
echo " ";
|
|
if (($context["group_queries"] ?? $this->getContext($context, "group_queries"))) {
|
|
// line 210
|
|
echo " ";
|
|
$context["queries"] = $this->getAttribute($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "groupedQueries", []), $context["connection"], [], "array");
|
|
// line 211
|
|
echo " ";
|
|
}
|
|
// line 212
|
|
echo " <table class=\"alt queries-table\">
|
|
<thead>
|
|
<tr>
|
|
";
|
|
// line 215
|
|
if (($context["group_queries"] ?? $this->getContext($context, "group_queries"))) {
|
|
// line 216
|
|
echo " <th class=\"nowrap\" onclick=\"javascript:sortTable(this, 0, 'queries-";
|
|
echo twig_escape_filter($this->env, $this->getAttribute($context["loop"], "index", []), "html", null, true);
|
|
echo "')\" data-sort-direction=\"1\" style=\"cursor: pointer;\">Time<span class=\"text-muted\">▼</span></th>
|
|
<th class=\"nowrap\" onclick=\"javascript:sortTable(this, 1, 'queries-";
|
|
// line 217
|
|
echo twig_escape_filter($this->env, $this->getAttribute($context["loop"], "index", []), "html", null, true);
|
|
echo "')\" style=\"cursor: pointer;\">Count<span></span></th>
|
|
";
|
|
} else {
|
|
// line 219
|
|
echo " <th class=\"nowrap\" onclick=\"javascript:sortTable(this, 0, 'queries-";
|
|
echo twig_escape_filter($this->env, $this->getAttribute($context["loop"], "index", []), "html", null, true);
|
|
echo "')\" data-sort-direction=\"-1\" style=\"cursor: pointer;\">#<span class=\"text-muted\">▲</span></th>
|
|
<th class=\"nowrap\" onclick=\"javascript:sortTable(this, 1, 'queries-";
|
|
// line 220
|
|
echo twig_escape_filter($this->env, $this->getAttribute($context["loop"], "index", []), "html", null, true);
|
|
echo "')\" style=\"cursor: pointer;\">Time<span></span></th>
|
|
";
|
|
}
|
|
// line 222
|
|
echo " <th style=\"width: 100%;\">Info</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody id=\"queries-";
|
|
// line 225
|
|
echo twig_escape_filter($this->env, $this->getAttribute($context["loop"], "index", []), "html", null, true);
|
|
echo "\">
|
|
";
|
|
// line 226
|
|
$context['_parent'] = $context;
|
|
$context['_seq'] = twig_ensure_traversable($context["queries"]);
|
|
$context['loop'] = [
|
|
'parent' => $context['_parent'],
|
|
'index0' => 0,
|
|
'index' => 1,
|
|
'first' => true,
|
|
];
|
|
if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
|
|
$length = count($context['_seq']);
|
|
$context['loop']['revindex0'] = $length - 1;
|
|
$context['loop']['revindex'] = $length;
|
|
$context['loop']['length'] = $length;
|
|
$context['loop']['last'] = 1 === $length;
|
|
}
|
|
foreach ($context['_seq'] as $context["i"] => $context["query"]) {
|
|
// line 227
|
|
echo " ";
|
|
$context["i"] = ((($context["group_queries"] ?? $this->getContext($context, "group_queries"))) ? ($this->getAttribute($context["query"], "index", [])) : ($context["i"]));
|
|
// line 228
|
|
echo " <tr id=\"queryNo-";
|
|
echo twig_escape_filter($this->env, $context["i"], "html", null, true);
|
|
echo "-";
|
|
echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute($this->getAttribute($context["loop"], "parent", []), "loop", []), "index", []), "html", null, true);
|
|
echo "\">
|
|
";
|
|
// line 229
|
|
if (($context["group_queries"] ?? $this->getContext($context, "group_queries"))) {
|
|
// line 230
|
|
echo " <td class=\"time-container\">
|
|
<span class=\"time-bar\" style=\"width:";
|
|
// line 231
|
|
echo twig_escape_filter($this->env, sprintf("%0.2f", $this->getAttribute($context["query"], "executionPercent", [])), "html", null, true);
|
|
echo "%\"></span>
|
|
<span class=\"nowrap\">";
|
|
// line 232
|
|
echo twig_escape_filter($this->env, sprintf("%0.2f", ($this->getAttribute($context["query"], "executionMS", []) * 1000)), "html", null, true);
|
|
echo " ms<br />(";
|
|
echo twig_escape_filter($this->env, sprintf("%0.2f", $this->getAttribute($context["query"], "executionPercent", [])), "html", null, true);
|
|
echo "%)</span>
|
|
</td>
|
|
<td class=\"nowrap\">";
|
|
// line 234
|
|
echo twig_escape_filter($this->env, $this->getAttribute($context["query"], "count", []), "html", null, true);
|
|
echo "</td>
|
|
";
|
|
} else {
|
|
// line 236
|
|
echo " <td class=\"nowrap\">";
|
|
echo twig_escape_filter($this->env, $this->getAttribute($context["loop"], "index", []), "html", null, true);
|
|
echo "</td>
|
|
<td class=\"nowrap\">";
|
|
// line 237
|
|
echo twig_escape_filter($this->env, sprintf("%0.2f", ($this->getAttribute($context["query"], "executionMS", []) * 1000)), "html", null, true);
|
|
echo " ms</td>
|
|
";
|
|
}
|
|
// line 239
|
|
echo " <td>
|
|
";
|
|
// line 240
|
|
echo $this->env->getExtension('Doctrine\Bundle\DoctrineBundle\Twig\DoctrineExtension')->formatQuery($this->getAttribute($context["query"], "sql", []), true);
|
|
echo "
|
|
|
|
<div>
|
|
<strong class=\"font-normal text-small\">Parameters</strong>: ";
|
|
// line 243
|
|
echo call_user_func_array($this->env->getFunction('profiler_dump')->getCallable(), [$this->env, $this->getAttribute($context["query"], "params", []), 2]);
|
|
echo "
|
|
</div>
|
|
|
|
<div class=\"text-small font-normal\">
|
|
<a href=\"#\" ";
|
|
// line 247
|
|
echo (((($context["profiler_markup_version"] ?? $this->getContext($context, "profiler_markup_version")) == 1)) ? ("onclick=\"return toggleRunnableQuery(this);\"") : (""));
|
|
echo " class=\"sf-toggle link-inverse\" data-toggle-selector=\"#formatted-query-";
|
|
echo twig_escape_filter($this->env, $context["i"], "html", null, true);
|
|
echo "-";
|
|
echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute($this->getAttribute($context["loop"], "parent", []), "loop", []), "index", []), "html", null, true);
|
|
echo "\" data-toggle-alt-content=\"Hide formatted query\">View formatted query</a>
|
|
|
|
|
|
|
|
<a href=\"#\" ";
|
|
// line 251
|
|
echo (((($context["profiler_markup_version"] ?? $this->getContext($context, "profiler_markup_version")) == 1)) ? ("onclick=\"return toggleRunnableQuery(this);\"") : (""));
|
|
echo " class=\"sf-toggle link-inverse\" data-toggle-selector=\"#original-query-";
|
|
echo twig_escape_filter($this->env, $context["i"], "html", null, true);
|
|
echo "-";
|
|
echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute($this->getAttribute($context["loop"], "parent", []), "loop", []), "index", []), "html", null, true);
|
|
echo "\" data-toggle-alt-content=\"Hide runnable query\">View runnable query</a>
|
|
|
|
";
|
|
// line 253
|
|
if ($this->getAttribute($context["query"], "explainable", [])) {
|
|
// line 254
|
|
echo "
|
|
<a class=\"link-inverse\" href=\"";
|
|
// line 255
|
|
echo twig_escape_filter($this->env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("_profiler", ["panel" => "db", "token" => ($context["token"] ?? $this->getContext($context, "token")), "page" => "explain", "connection" => $context["connection"], "query" => $context["i"]]), "html", null, true);
|
|
echo "\" onclick=\"return explain(this);\" data-target-id=\"explain-";
|
|
echo twig_escape_filter($this->env, $context["i"], "html", null, true);
|
|
echo "-";
|
|
echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute($this->getAttribute($context["loop"], "parent", []), "loop", []), "index", []), "html", null, true);
|
|
echo "\">Explain query</a>
|
|
";
|
|
}
|
|
// line 257
|
|
echo " </div>
|
|
|
|
<div id=\"formatted-query-";
|
|
// line 259
|
|
echo twig_escape_filter($this->env, $context["i"], "html", null, true);
|
|
echo "-";
|
|
echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute($this->getAttribute($context["loop"], "parent", []), "loop", []), "index", []), "html", null, true);
|
|
echo "\" class=\"sql-runnable hidden\">
|
|
";
|
|
// line 260
|
|
echo $this->env->getExtension('Doctrine\Bundle\DoctrineBundle\Twig\DoctrineExtension')->formatQuery($this->getAttribute($context["query"], "sql", []));
|
|
echo "
|
|
</div>
|
|
|
|
<div id=\"original-query-";
|
|
// line 263
|
|
echo twig_escape_filter($this->env, $context["i"], "html", null, true);
|
|
echo "-";
|
|
echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute($this->getAttribute($context["loop"], "parent", []), "loop", []), "index", []), "html", null, true);
|
|
echo "\" class=\"sql-runnable hidden\">
|
|
";
|
|
// line 264
|
|
echo $this->env->getExtension('Doctrine\Bundle\DoctrineBundle\Twig\DoctrineExtension')->formatQuery($this->env->getExtension('Doctrine\Bundle\DoctrineBundle\Twig\DoctrineExtension')->replaceQueryParameters(($this->getAttribute($context["query"], "sql", []) . ";"), $this->getAttribute($context["query"], "params", [])), true);
|
|
echo "
|
|
</div>
|
|
|
|
";
|
|
// line 267
|
|
if ($this->getAttribute($context["query"], "explainable", [])) {
|
|
// line 268
|
|
echo " <div id=\"explain-";
|
|
echo twig_escape_filter($this->env, $context["i"], "html", null, true);
|
|
echo "-";
|
|
echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute($this->getAttribute($context["loop"], "parent", []), "loop", []), "index", []), "html", null, true);
|
|
echo "\" class=\"sql-explain\"></div>
|
|
";
|
|
}
|
|
// line 270
|
|
echo " </td>
|
|
</tr>
|
|
";
|
|
++$context['loop']['index0'];
|
|
++$context['loop']['index'];
|
|
$context['loop']['first'] = false;
|
|
if (isset($context['loop']['length'])) {
|
|
--$context['loop']['revindex0'];
|
|
--$context['loop']['revindex'];
|
|
$context['loop']['last'] = 0 === $context['loop']['revindex0'];
|
|
}
|
|
}
|
|
$_parent = $context['_parent'];
|
|
unset($context['_seq'], $context['_iterated'], $context['i'], $context['query'], $context['_parent'], $context['loop']);
|
|
$context = array_intersect_key($context, $_parent) + $_parent;
|
|
// line 273
|
|
echo " </tbody>
|
|
</table>
|
|
";
|
|
}
|
|
// line 276
|
|
echo " ";
|
|
++$context['loop']['index0'];
|
|
++$context['loop']['index'];
|
|
$context['loop']['first'] = false;
|
|
if (isset($context['loop']['length'])) {
|
|
--$context['loop']['revindex0'];
|
|
--$context['loop']['revindex'];
|
|
$context['loop']['last'] = 0 === $context['loop']['revindex0'];
|
|
}
|
|
}
|
|
$_parent = $context['_parent'];
|
|
unset($context['_seq'], $context['_iterated'], $context['connection'], $context['queries'], $context['_parent'], $context['loop']);
|
|
$context = array_intersect_key($context, $_parent) + $_parent;
|
|
// line 277
|
|
echo "
|
|
<h2>Database Connections</h2>
|
|
|
|
";
|
|
// line 280
|
|
if ( !$this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "connections", [])) {
|
|
// line 281
|
|
echo " <div class=\"empty\">
|
|
<p>There are no configured database connections.</p>
|
|
</div>
|
|
";
|
|
} else {
|
|
// line 285
|
|
echo " ";
|
|
echo $context["helper"]->getrender_simple_table("Name", "Service", $this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "connections", []));
|
|
echo "
|
|
";
|
|
}
|
|
// line 287
|
|
echo "
|
|
<h2>Entity Managers</h2>
|
|
|
|
";
|
|
// line 290
|
|
if ( !$this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "managers", [])) {
|
|
// line 291
|
|
echo " <div class=\"empty\">
|
|
<p>There are no configured entity managers.</p>
|
|
</div>
|
|
";
|
|
} else {
|
|
// line 295
|
|
echo " ";
|
|
echo $context["helper"]->getrender_simple_table("Name", "Service", $this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "managers", []));
|
|
echo "
|
|
";
|
|
}
|
|
// line 297
|
|
echo "
|
|
<h2>Second Level Cache</h2>
|
|
|
|
";
|
|
// line 300
|
|
if ( !$this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "cacheEnabled", [])) {
|
|
// line 301
|
|
echo " <div class=\"empty\">
|
|
<p>Second Level Cache is not enabled.</p>
|
|
</div>
|
|
";
|
|
} else {
|
|
// line 305
|
|
echo " ";
|
|
if ( !$this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "cacheCounts", [])) {
|
|
// line 306
|
|
echo " <div class=\"empty\">
|
|
<p>Second level cache information is not available.</p>
|
|
</div>
|
|
";
|
|
} else {
|
|
// line 310
|
|
echo " ";
|
|
if ((($context["profiler_markup_version"] ?? $this->getContext($context, "profiler_markup_version")) == 1)) {
|
|
// line 311
|
|
echo " ";
|
|
echo $context["helper"]->getrender_simple_table("Key", "Value", $this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "cacheCounts", []));
|
|
echo "
|
|
";
|
|
} else {
|
|
// line 313
|
|
echo " <div class=\"metrics\">
|
|
<div class=\"metric\">
|
|
<span class=\"value\">";
|
|
// line 315
|
|
echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "cacheCounts", []), "hits", []), "html", null, true);
|
|
echo "</span>
|
|
<span class=\"label\">Hits</span>
|
|
</div>
|
|
|
|
<div class=\"metric\">
|
|
<span class=\"value\">";
|
|
// line 320
|
|
echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "cacheCounts", []), "misses", []), "html", null, true);
|
|
echo "</span>
|
|
<span class=\"label\">Misses</span>
|
|
</div>
|
|
|
|
<div class=\"metric\">
|
|
<span class=\"value\">";
|
|
// line 325
|
|
echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "cacheCounts", []), "puts", []), "html", null, true);
|
|
echo "</span>
|
|
<span class=\"label\">Puts</span>
|
|
</div>
|
|
</div>
|
|
";
|
|
}
|
|
// line 330
|
|
echo "
|
|
";
|
|
// line 331
|
|
if ($this->getAttribute($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "cacheRegions", []), "hits", [])) {
|
|
// line 332
|
|
echo " <h3>Number of cache hits</h3>
|
|
";
|
|
// line 333
|
|
echo $context["helper"]->getrender_simple_table("Region", "Hits", $this->getAttribute($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "cacheRegions", []), "hits", []));
|
|
echo "
|
|
";
|
|
}
|
|
// line 335
|
|
echo "
|
|
";
|
|
// line 336
|
|
if ($this->getAttribute($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "cacheRegions", []), "misses", [])) {
|
|
// line 337
|
|
echo " <h3>Number of cache misses</h3>
|
|
";
|
|
// line 338
|
|
echo $context["helper"]->getrender_simple_table("Region", "Misses", $this->getAttribute($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "cacheRegions", []), "misses", []));
|
|
echo "
|
|
";
|
|
}
|
|
// line 340
|
|
echo "
|
|
";
|
|
// line 341
|
|
if ($this->getAttribute($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "cacheRegions", []), "puts", [])) {
|
|
// line 342
|
|
echo " <h3>Number of cache puts</h3>
|
|
";
|
|
// line 343
|
|
echo $context["helper"]->getrender_simple_table("Region", "Puts", $this->getAttribute($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "cacheRegions", []), "puts", []));
|
|
echo "
|
|
";
|
|
}
|
|
// line 345
|
|
echo " ";
|
|
}
|
|
// line 346
|
|
echo " ";
|
|
}
|
|
// line 347
|
|
echo "
|
|
<h2>Entities Mapping</h2>
|
|
|
|
";
|
|
// line 350
|
|
$context['_parent'] = $context;
|
|
$context['_seq'] = twig_ensure_traversable($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "entities", []));
|
|
foreach ($context['_seq'] as $context["manager"] => $context["classes"]) {
|
|
// line 351
|
|
echo " ";
|
|
if ((twig_length_filter($this->env, $this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "managers", [])) > 1)) {
|
|
// line 352
|
|
echo " <h3>";
|
|
echo twig_escape_filter($this->env, $context["manager"], "html", null, true);
|
|
echo " <small>entity manager</small></h3>
|
|
";
|
|
}
|
|
// line 354
|
|
echo "
|
|
";
|
|
// line 355
|
|
if (twig_test_empty($context["classes"])) {
|
|
// line 356
|
|
echo " <div class=\"empty\">
|
|
<p>No loaded entities.</p>
|
|
</div>
|
|
";
|
|
} else {
|
|
// line 360
|
|
echo " <table>
|
|
<thead>
|
|
<tr>
|
|
<th scope=\"col\">Class</th>
|
|
<th scope=\"col\">Mapping errors</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
";
|
|
// line 368
|
|
$context['_parent'] = $context;
|
|
$context['_seq'] = twig_ensure_traversable($context["classes"]);
|
|
foreach ($context['_seq'] as $context["_key"] => $context["class"]) {
|
|
// line 369
|
|
echo " ";
|
|
$context["contains_errors"] = ($this->getAttribute($this->getAttribute(($context["collector"] ?? null), "mappingErrors", [], "any", false, true), $context["manager"], [], "array", true, true) && $this->getAttribute($this->getAttribute($this->getAttribute(($context["collector"] ?? null), "mappingErrors", [], "any", false, true), $context["manager"], [], "array", false, true), $context["class"], [], "array", true, true));
|
|
// line 370
|
|
echo " <tr class=\"";
|
|
echo ((($context["contains_errors"] ?? $this->getContext($context, "contains_errors"))) ? ("status-error") : (""));
|
|
echo "\">
|
|
<td>";
|
|
// line 371
|
|
echo twig_escape_filter($this->env, $context["class"], "html", null, true);
|
|
echo "</td>
|
|
<td class=\"font-normal\">
|
|
";
|
|
// line 373
|
|
if (($context["contains_errors"] ?? $this->getContext($context, "contains_errors"))) {
|
|
// line 374
|
|
echo " <ul>
|
|
";
|
|
// line 375
|
|
$context['_parent'] = $context;
|
|
$context['_seq'] = twig_ensure_traversable($this->getAttribute($this->getAttribute($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "mappingErrors", []), $context["manager"], [], "array"), $context["class"], [], "array"));
|
|
foreach ($context['_seq'] as $context["_key"] => $context["error"]) {
|
|
// line 376
|
|
echo " <li>";
|
|
echo twig_escape_filter($this->env, $context["error"], "html", null, true);
|
|
echo "</li>
|
|
";
|
|
}
|
|
$_parent = $context['_parent'];
|
|
unset($context['_seq'], $context['_iterated'], $context['_key'], $context['error'], $context['_parent'], $context['loop']);
|
|
$context = array_intersect_key($context, $_parent) + $_parent;
|
|
// line 378
|
|
echo " </ul>
|
|
";
|
|
} else {
|
|
// line 380
|
|
echo " No errors.
|
|
";
|
|
}
|
|
// line 382
|
|
echo " </td>
|
|
</tr>
|
|
";
|
|
}
|
|
$_parent = $context['_parent'];
|
|
unset($context['_seq'], $context['_iterated'], $context['_key'], $context['class'], $context['_parent'], $context['loop']);
|
|
$context = array_intersect_key($context, $_parent) + $_parent;
|
|
// line 385
|
|
echo " </tbody>
|
|
</table>
|
|
";
|
|
}
|
|
// line 388
|
|
echo " ";
|
|
}
|
|
$_parent = $context['_parent'];
|
|
unset($context['_seq'], $context['_iterated'], $context['manager'], $context['classes'], $context['_parent'], $context['loop']);
|
|
$context = array_intersect_key($context, $_parent) + $_parent;
|
|
// line 389
|
|
echo "
|
|
<script type=\"text/javascript\">//<![CDATA[
|
|
function explain(link) {
|
|
\"use strict\";
|
|
|
|
var targetId = link.getAttribute('data-target-id');
|
|
var targetElement = document.getElementById(targetId);
|
|
|
|
if (targetElement.style.display != 'block') {
|
|
Sfjs.load(targetId, link.href, null, function(xhr, el) {
|
|
el.innerHTML = 'An error occurred while loading the query explanation.';
|
|
});
|
|
|
|
targetElement.style.display = 'block';
|
|
link.innerHTML = 'Hide query explanation';
|
|
} else {
|
|
targetElement.style.display = 'none';
|
|
link.innerHTML = 'Explain query';
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
function sortTable(header, column, targetId) {
|
|
\"use strict\";
|
|
|
|
var direction = parseInt(header.getAttribute('data-sort-direction')) || 1,
|
|
items = [],
|
|
target = document.getElementById(targetId),
|
|
rows = target.children,
|
|
headers = header.parentElement.children,
|
|
i;
|
|
|
|
for (i = 0; i < rows.length; ++i) {
|
|
items.push(rows[i]);
|
|
}
|
|
|
|
for (i = 0; i < headers.length; ++i) {
|
|
headers[i].removeAttribute('data-sort-direction');
|
|
if (headers[i].children.length > 0) {
|
|
headers[i].children[0].innerHTML = '';
|
|
}
|
|
}
|
|
|
|
header.setAttribute('data-sort-direction', (-1*direction).toString());
|
|
header.children[0].innerHTML = direction > 0 ? '<span class=\"text-muted\">▲</span>' : '<span class=\"text-muted\">▼</span>';
|
|
|
|
items.sort(function(a, b) {
|
|
return direction * (parseFloat(a.children[column].innerHTML) - parseFloat(b.children[column].innerHTML));
|
|
});
|
|
|
|
for (i = 0; i < items.length; ++i) {
|
|
Sfjs.removeClass(items[i], i % 2 ? 'even' : 'odd');
|
|
Sfjs.addClass(items[i], i % 2 ? 'odd' : 'even');
|
|
target.appendChild(items[i]);
|
|
}
|
|
}
|
|
|
|
";
|
|
// line 447
|
|
if ((($context["profiler_markup_version"] ?? $this->getContext($context, "profiler_markup_version")) == 1)) {
|
|
// line 448
|
|
echo " function toggleRunnableQuery(target) {
|
|
var targetSelector = target.getAttribute('data-toggle-selector');
|
|
var targetDataAltContent = target.getAttribute('data-toggle-alt-content');
|
|
var targetElement = document.querySelector(targetSelector);
|
|
target.setAttribute('data-toggle-alt-content', target.innerHTML);
|
|
|
|
if (targetElement.style.display != 'block') {
|
|
targetElement.style.display = 'block';
|
|
target.innerHTML = targetDataAltContent;
|
|
} else {
|
|
targetElement.style.display = 'none';
|
|
target.innerHTML = targetDataAltContent;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
";
|
|
}
|
|
// line 465
|
|
echo "
|
|
//]]></script>
|
|
";
|
|
|
|
$__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->leave($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof);
|
|
|
|
|
|
$__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->leave($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof);
|
|
|
|
}
|
|
|
|
// line 469
|
|
public function getrender_simple_table($__label1__ = null, $__label2__ = null, $__data__ = null, ...$__varargs__)
|
|
{
|
|
$context = $this->env->mergeGlobals([
|
|
"label1" => $__label1__,
|
|
"label2" => $__label2__,
|
|
"data" => $__data__,
|
|
"varargs" => $__varargs__,
|
|
]);
|
|
|
|
$blocks = [];
|
|
|
|
ob_start();
|
|
try {
|
|
$__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension");
|
|
$__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->enter($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "macro", "render_simple_table"));
|
|
|
|
$__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension");
|
|
$__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->enter($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "macro", "render_simple_table"));
|
|
|
|
// line 470
|
|
echo " <table>
|
|
<thead>
|
|
<tr>
|
|
<th scope=\"col\" class=\"key\">";
|
|
// line 473
|
|
echo twig_escape_filter($this->env, ($context["label1"] ?? $this->getContext($context, "label1")), "html", null, true);
|
|
echo "</th>
|
|
<th scope=\"col\">";
|
|
// line 474
|
|
echo twig_escape_filter($this->env, ($context["label2"] ?? $this->getContext($context, "label2")), "html", null, true);
|
|
echo "</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
";
|
|
// line 478
|
|
$context['_parent'] = $context;
|
|
$context['_seq'] = twig_ensure_traversable(($context["data"] ?? $this->getContext($context, "data")));
|
|
foreach ($context['_seq'] as $context["key"] => $context["value"]) {
|
|
// line 479
|
|
echo " <tr>
|
|
<th scope=\"row\">";
|
|
// line 480
|
|
echo twig_escape_filter($this->env, $context["key"], "html", null, true);
|
|
echo "</th>
|
|
<td>";
|
|
// line 481
|
|
echo twig_escape_filter($this->env, $context["value"], "html", null, true);
|
|
echo "</td>
|
|
</tr>
|
|
";
|
|
}
|
|
$_parent = $context['_parent'];
|
|
unset($context['_seq'], $context['_iterated'], $context['key'], $context['value'], $context['_parent'], $context['loop']);
|
|
$context = array_intersect_key($context, $_parent) + $_parent;
|
|
// line 484
|
|
echo " </tbody>
|
|
</table>
|
|
";
|
|
|
|
$__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->leave($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof);
|
|
|
|
|
|
$__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->leave($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof);
|
|
|
|
} catch (\Exception $e) {
|
|
ob_end_clean();
|
|
|
|
throw $e;
|
|
} catch (\Throwable $e) {
|
|
ob_end_clean();
|
|
|
|
throw $e;
|
|
}
|
|
|
|
return ('' === $tmp = ob_get_clean()) ? '' : new Markup($tmp, $this->env->getCharset());
|
|
}
|
|
|
|
public function getTemplateName()
|
|
{
|
|
return "@Doctrine/Collector/db.html.twig";
|
|
}
|
|
|
|
public function isTraitable()
|
|
{
|
|
return false;
|
|
}
|
|
|
|
public function getDebugInfo()
|
|
{
|
|
return array ( 1150 => 484, 1141 => 481, 1137 => 480, 1134 => 479, 1130 => 478, 1123 => 474, 1119 => 473, 1114 => 470, 1094 => 469, 1082 => 465, 1063 => 448, 1061 => 447, 1001 => 389, 995 => 388, 990 => 385, 982 => 382, 978 => 380, 974 => 378, 965 => 376, 961 => 375, 958 => 374, 956 => 373, 951 => 371, 946 => 370, 943 => 369, 939 => 368, 929 => 360, 923 => 356, 921 => 355, 918 => 354, 912 => 352, 909 => 351, 905 => 350, 900 => 347, 897 => 346, 894 => 345, 889 => 343, 886 => 342, 884 => 341, 881 => 340, 876 => 338, 873 => 337, 871 => 336, 868 => 335, 863 => 333, 860 => 332, 858 => 331, 855 => 330, 847 => 325, 839 => 320, 831 => 315, 827 => 313, 821 => 311, 818 => 310, 812 => 306, 809 => 305, 803 => 301, 801 => 300, 796 => 297, 790 => 295, 784 => 291, 782 => 290, 777 => 287, 771 => 285, 765 => 281, 763 => 280, 758 => 277, 744 => 276, 739 => 273, 723 => 270, 715 => 268, 713 => 267, 707 => 264, 701 => 263, 695 => 260, 689 => 259, 685 => 257, 676 => 255, 673 => 254, 671 => 253, 662 => 251, 651 => 247, 644 => 243, 638 => 240, 635 => 239, 630 => 237, 625 => 236, 620 => 234, 613 => 232, 609 => 231, 606 => 230, 604 => 229, 597 => 228, 594 => 227, 577 => 226, 573 => 225, 568 => 222, 563 => 220, 558 => 219, 553 => 217, 548 => 216, 546 => 215, 541 => 212, 538 => 211, 535 => 210, 532 => 209, 526 => 205, 524 => 204, 521 => 203, 515 => 201, 512 => 200, 495 => 199, 492 => 198, 487 => 196, 484 => 195, 479 => 193, 476 => 192, 473 => 191, 471 => 190, 468 => 189, 464 => 187, 457 => 183, 450 => 179, 443 => 175, 440 => 174, 438 => 173, 431 => 169, 423 => 164, 415 => 159, 407 => 154, 401 => 150, 399 => 149, 391 => 143, 375 => 129, 373 => 128, 370 => 127, 361 => 126, 347 => 122, 343 => 120, 341 => 119, 340 => 118, 339 => 116, 337 => 115, 335 => 114, 332 => 113, 329 => 112, 320 => 111, 307 => 106, 301 => 103, 298 => 102, 296 => 101, 291 => 99, 285 => 98, 282 => 97, 274 => 92, 270 => 91, 263 => 86, 261 => 85, 258 => 84, 255 => 83, 246 => 82, 232 => 77, 229 => 76, 226 => 75, 219 => 70, 211 => 67, 202 => 63, 195 => 59, 191 => 57, 189 => 56, 182 => 54, 175 => 50, 166 => 46, 162 => 44, 160 => 43, 157 => 42, 154 => 41, 150 => 39, 143 => 35, 136 => 32, 129 => 29, 127 => 28, 122 => 26, 119 => 25, 117 => 24, 114 => 23, 110 => 21, 104 => 19, 101 => 18, 95 => 16, 93 => 15, 85 => 14, 81 => 12, 78 => 11, 76 => 10, 73 => 9, 71 => 8, 68 => 7, 65 => 6, 56 => 5, 46 => 1, 44 => 3, 32 => 1,);
|
|
}
|
|
|
|
/** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */
|
|
public function getSource()
|
|
{
|
|
@trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED);
|
|
|
|
return $this->getSourceContext()->getCode();
|
|
}
|
|
|
|
public function getSourceContext()
|
|
{
|
|
return new Source("{% extends request.isXmlHttpRequest ? '@WebProfiler/Profiler/ajax_layout.html.twig' : '@WebProfiler/Profiler/layout.html.twig' %}
|
|
|
|
{% import _self as helper %}
|
|
|
|
{% block toolbar %}
|
|
{% if collector.querycount > 0 or collector.invalidEntityCount > 0 %}
|
|
|
|
{% set profiler_markup_version = profiler_markup_version|default(1) %}
|
|
|
|
{% set icon %}
|
|
{% if profiler_markup_version == 1 %}
|
|
|
|
<img width=\"20\" height=\"28\" alt=\"Database\" src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAcCAYAAABh2p9gAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQRJREFUeNpi/P//PwM1ARMDlcGogZQDlpMnT7pxc3NbA9nhQKxOpL5rQLwJiPeBsI6Ozl+YBOOOHTv+AOllQNwtLS39F2owKYZ/gRq8G4i3ggxEToggWzvc3d2Pk+1lNL4fFAs6ODi8JzdS7mMRVyDVoAMHDsANdAPiOCC+jCQvQKqBQB/BDbwBxK5AHA3E/kB8nKJkA8TMQBwLxaBIKQbi70AvTADSBiSadwFXpCikpKQU8PDwkGTaly9fHFigkaKIJid4584dkiMFFI6jkTJII0WVmpHCAixZQEXWYhDeuXMnyLsVlEQKI45qFBQZ8eRECi4DBaAlDqle/8A48ip6gAADANdQY88Uc0oGAAAAAElFTkSuQmCC\" />
|
|
<span class=\"sf-toolbar-value sf-toolbar-status {% if collector.querycount > 50 %}sf-toolbar-status-yellow{% endif %}\">{{ collector.querycount }}</span>
|
|
{% if collector.querycount > 0 %}
|
|
<span class=\"sf-toolbar-info-piece-additional-detail\">in {{ '%0.2f'|format(collector.time * 1000) }} ms</span>
|
|
{% endif %}
|
|
{% if collector.invalidEntityCount > 0 %}
|
|
<span class=\"sf-toolbar-info-piece-additional sf-toolbar-status sf-toolbar-status-red\">{{ collector.invalidEntityCount }}</span>
|
|
{% endif %}
|
|
|
|
{% else %}
|
|
|
|
{% set status = collector.invalidEntityCount > 0 ? 'red' : collector.querycount > 50 ? 'yellow' %}
|
|
|
|
{{ include('@Doctrine/Collector/icon.svg') }}
|
|
|
|
{% if collector.querycount == 0 and collector.invalidEntityCount > 0 %}
|
|
<span class=\"sf-toolbar-value\">{{ collector.invalidEntityCount }}</span>
|
|
<span class=\"sf-toolbar-label\">errors</span>
|
|
{% else %}
|
|
<span class=\"sf-toolbar-value\">{{ collector.querycount }}</span>
|
|
<span class=\"sf-toolbar-info-piece-additional-detail\">
|
|
<span class=\"sf-toolbar-label\">in</span>
|
|
<span class=\"sf-toolbar-value\">{{ '%0.2f'|format(collector.time * 1000) }}</span>
|
|
<span class=\"sf-toolbar-label\">ms</span>
|
|
</span>
|
|
{% endif %}
|
|
|
|
{% endif %}
|
|
{% endset %}
|
|
|
|
{% set text %}
|
|
<div class=\"sf-toolbar-info-piece\">
|
|
<b>Database Queries</b>
|
|
<span class=\"sf-toolbar-status {{ collector.querycount > 50 ? 'sf-toolbar-status-yellow' : '' }}\">{{ collector.querycount }}</span>
|
|
</div>
|
|
<div class=\"sf-toolbar-info-piece\">
|
|
<b>Query time</b>
|
|
<span>{{ '%0.2f'|format(collector.time * 1000) }} ms</span>
|
|
</div>
|
|
<div class=\"sf-toolbar-info-piece\">
|
|
<b>Invalid entities</b>
|
|
<span class=\"sf-toolbar-status {{ collector.invalidEntityCount > 0 ? 'sf-toolbar-status-red' : '' }}\">{{ collector.invalidEntityCount }}</span>
|
|
</div>
|
|
{% if collector.cacheEnabled %}
|
|
<div class=\"sf-toolbar-info-piece\">
|
|
<b>Cache hits</b>
|
|
<span class=\"sf-toolbar-status sf-toolbar-status-green\">{{ collector.cacheHitsCount }}</span>
|
|
</div>
|
|
<div class=\"sf-toolbar-info-piece\">
|
|
<b>Cache misses</b>
|
|
<span class=\"sf-toolbar-status {{ collector.cacheMissesCount > 0 ? 'sf-toolbar-status-yellow' : '' }}\">{{ collector.cacheMissesCount }}</span>
|
|
</div>
|
|
<div class=\"sf-toolbar-info-piece\">
|
|
<b>Cache puts</b>
|
|
<span class=\"sf-toolbar-status {{ collector.cachePutsCount > 0 ? 'sf-toolbar-status-yellow' : '' }}\">{{ collector.cachePutsCount }}</span>
|
|
</div>
|
|
{% else %}
|
|
<div class=\"sf-toolbar-info-piece\">
|
|
<b>Second Level Cache</b>
|
|
<span class=\"sf-toolbar-status\">disabled</span>
|
|
</div>
|
|
{% endif %}
|
|
{% endset %}
|
|
|
|
{{ include('@WebProfiler/Profiler/toolbar_item.html.twig', { link: profiler_url, status: status|default('') }) }}
|
|
|
|
{% endif %}
|
|
{% endblock %}
|
|
|
|
{% block menu %}
|
|
{% set profiler_markup_version = profiler_markup_version|default(1) %}
|
|
|
|
{% if profiler_markup_version == 1 %}
|
|
|
|
<span class=\"label\">
|
|
<span class=\"icon\"><img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAcCAYAAAB/E6/TAAABLUlEQVR42u3TP0vDQBiA8UK/gDiLzi0IhU4OEunk5OQUAhGSOBUCzqWfIKSzX8DRySF0URCcMjWLIJjFD9Cpk/D6HITecEPUuzhIAz8CIdyTP/f2iqI4qaqqDx8l5Ic2uIeP/bquezCokOAFF+oCN3t4gPzSEjc4NEPaCldQbzjELTYW0RJzHDchwwem+ons6ZBpLSJ7nueJC22h0V+FzmwWV0ee59vQNV67CGVZJmEYbkNjfpY6X6I0Qo4/3RMmTdDDspuQVsJvgkP3IdMbIkIjLPBoadG2646iKJI0Ta2wxm6OdnP0/Tk6DYJgHcfxpw21RtscDTDDnaVZ26474GkkSRIrrPEv5sgMTfHe+cA2O6wPH6vOBpYQNALneHb96XTEDI6dzpEZ0VzO0Rf3pP5LMLI4tAAAAABJRU5ErkJggg==\" alt=\"\" /></span>
|
|
<strong>Doctrine</strong>
|
|
<span class=\"count\">
|
|
<span>{{ collector.querycount }}</span>
|
|
<span>{{ '%0.0f'|format(collector.time * 1000) }} ms</span>
|
|
</span>
|
|
</span>
|
|
|
|
{% else %}
|
|
|
|
<span class=\"label {{ collector.invalidEntityCount > 0 ? 'label-status-error' }} {{ collector.querycount == 0 ? 'disabled' }}\">
|
|
<span class=\"icon\">{{ include('@Doctrine/Collector/icon.svg') }}</span>
|
|
<strong>Doctrine</strong>
|
|
{% if collector.invalidEntityCount %}
|
|
<span class=\"count\">
|
|
<span>{{ collector.invalidEntityCount }}</span>
|
|
</span>
|
|
{% endif %}
|
|
</span>
|
|
|
|
{% endif %}
|
|
{% endblock %}
|
|
|
|
{% block panel %}
|
|
{% set profiler_markup_version = profiler_markup_version|default(1) %}
|
|
|
|
{% if 'explain' == page %}
|
|
{{ render(controller('DoctrineBundle:Profiler:explain', {
|
|
token: token,
|
|
panel: 'db',
|
|
connectionName: request.query.get('connection'),
|
|
query: request.query.get('query')
|
|
})) }}
|
|
{% else %}
|
|
{{ block('queries') }}
|
|
{% endif %}
|
|
{% endblock %}
|
|
|
|
{% block queries %}
|
|
<style>
|
|
{% if profiler_markup_version == 1 %}
|
|
.hidden { display: none; }
|
|
.queries-table td, .queries-table th { vertical-align: top; }
|
|
.queries-table td > div { margin-bottom: 6px; }
|
|
.highlight pre { margin: 0; white-space: pre-wrap; }
|
|
.highlight .keyword { color: #8959A8; font-weight: bold; }
|
|
.highlight .word { color: #222222; }
|
|
.highlight .variable { color: #916319; }
|
|
.highlight .symbol { color: #222222; }
|
|
.highlight .comment { color: #999999; }
|
|
.highlight .backtick { color: #718C00; }
|
|
.highlight .string { color: #718C00; }
|
|
.highlight .number { color: #F5871F; font-weight: bold; }
|
|
.highlight .error { color: #C82829; }
|
|
{% endif %}
|
|
|
|
.time-container { position: relative; }
|
|
.time-container .nowrap { position: relative; z-index: 1; text-shadow: 0 0 2px #fff; }
|
|
.time-bar { display: block; position: absolute; top: 0; left: 0; bottom: 0; background: #e0e0e0; }
|
|
</style>
|
|
|
|
{% if profiler_markup_version > 1 %}
|
|
<h2>Query Metrics</h2>
|
|
|
|
<div class=\"metrics\">
|
|
<div class=\"metric\">
|
|
<span class=\"value\">{{ collector.querycount }}</span>
|
|
<span class=\"label\">Database Queries</span>
|
|
</div>
|
|
|
|
<div class=\"metric\">
|
|
<span class=\"value\">{{ collector.groupedQueryCount }}</span>
|
|
<span class=\"label\">Different statements</span>
|
|
</div>
|
|
|
|
<div class=\"metric\">
|
|
<span class=\"value\">{{ '%0.2f'|format(collector.time * 1000) }} ms</span>
|
|
<span class=\"label\">Query time</span>
|
|
</div>
|
|
|
|
<div class=\"metric\">
|
|
<span class=\"value\">{{ collector.invalidEntityCount }}</span>
|
|
<span class=\"label\">Invalid entities</span>
|
|
</div>
|
|
|
|
{% if collector.cacheEnabled %}
|
|
<div class=\"metric\">
|
|
\t<span class=\"value\">{{ collector.cacheHitsCount }}</span>
|
|
\t<span class=\"label\">Cache hits</span>
|
|
</div>
|
|
<div class=\"metric\">
|
|
\t<span class=\"value\">{{ collector.cacheMissesCount }}</span>
|
|
\t<span class=\"label\">Cache misses</span>
|
|
</div>
|
|
<div class=\"metric\">
|
|
\t<span class=\"value\">{{ collector.cachePutsCount }}</span>
|
|
\t<span class=\"label\">Cache puts</span>
|
|
</div>
|
|
{% endif %}
|
|
</div>
|
|
{% endif %}
|
|
|
|
{% set group_queries = request.query.getBoolean('group') %}
|
|
{% if group_queries %}
|
|
<h2>Grouped Statements</h2>
|
|
<p><a href=\"{{ path('_profiler', { panel: 'db', token: token }) }}\">Show all queries</a></p>
|
|
{% else %}
|
|
<h2>Queries</h2>
|
|
<p><a href=\"{{ path('_profiler', { panel: 'db', token: token, group: true }) }}\">Group similar statements</a></p>
|
|
{% endif %}
|
|
|
|
{% for connection, queries in collector.queries %}
|
|
{% if collector.connections|length > 1 %}
|
|
<h3>{{ connection }} <small>connection</small></h3>
|
|
{% endif %}
|
|
|
|
{% if queries is empty %}
|
|
<div class=\"empty\">
|
|
<p>No database queries were performed.</p>
|
|
</div>
|
|
{% else %}
|
|
{% if group_queries %}
|
|
{% set queries = collector.groupedQueries[connection] %}
|
|
{% endif %}
|
|
<table class=\"alt queries-table\">
|
|
<thead>
|
|
<tr>
|
|
{% if group_queries %}
|
|
<th class=\"nowrap\" onclick=\"javascript:sortTable(this, 0, 'queries-{{ loop.index }}')\" data-sort-direction=\"1\" style=\"cursor: pointer;\">Time<span class=\"text-muted\">▼</span></th>
|
|
<th class=\"nowrap\" onclick=\"javascript:sortTable(this, 1, 'queries-{{ loop.index }}')\" style=\"cursor: pointer;\">Count<span></span></th>
|
|
{% else %}
|
|
<th class=\"nowrap\" onclick=\"javascript:sortTable(this, 0, 'queries-{{ loop.index }}')\" data-sort-direction=\"-1\" style=\"cursor: pointer;\">#<span class=\"text-muted\">▲</span></th>
|
|
<th class=\"nowrap\" onclick=\"javascript:sortTable(this, 1, 'queries-{{ loop.index }}')\" style=\"cursor: pointer;\">Time<span></span></th>
|
|
{% endif %}
|
|
<th style=\"width: 100%;\">Info</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody id=\"queries-{{ loop.index }}\">
|
|
{% for i, query in queries %}
|
|
{% set i = group_queries ? query.index : i %}
|
|
<tr id=\"queryNo-{{ i }}-{{ loop.parent.loop.index }}\">
|
|
{% if group_queries %}
|
|
<td class=\"time-container\">
|
|
<span class=\"time-bar\" style=\"width:{{ '%0.2f'|format(query.executionPercent) }}%\"></span>
|
|
<span class=\"nowrap\">{{ '%0.2f'|format(query.executionMS * 1000) }} ms<br />({{ '%0.2f'|format(query.executionPercent) }}%)</span>
|
|
</td>
|
|
<td class=\"nowrap\">{{ query.count }}</td>
|
|
{% else %}
|
|
<td class=\"nowrap\">{{ loop.index }}</td>
|
|
<td class=\"nowrap\">{{ '%0.2f'|format(query.executionMS * 1000) }} ms</td>
|
|
{% endif %}
|
|
<td>
|
|
{{ query.sql|doctrine_pretty_query(highlight_only = true) }}
|
|
|
|
<div>
|
|
<strong class=\"font-normal text-small\">Parameters</strong>: {{ profiler_dump(query.params, 2) }}
|
|
</div>
|
|
|
|
<div class=\"text-small font-normal\">
|
|
<a href=\"#\" {{ profiler_markup_version == 1 ? 'onclick=\"return toggleRunnableQuery(this);\"' }} class=\"sf-toggle link-inverse\" data-toggle-selector=\"#formatted-query-{{ i }}-{{ loop.parent.loop.index }}\" data-toggle-alt-content=\"Hide formatted query\">View formatted query</a>
|
|
|
|
|
|
|
|
<a href=\"#\" {{ profiler_markup_version == 1 ? 'onclick=\"return toggleRunnableQuery(this);\"' }} class=\"sf-toggle link-inverse\" data-toggle-selector=\"#original-query-{{ i }}-{{ loop.parent.loop.index }}\" data-toggle-alt-content=\"Hide runnable query\">View runnable query</a>
|
|
|
|
{% if query.explainable %}
|
|
|
|
<a class=\"link-inverse\" href=\"{{ path('_profiler', { panel: 'db', token: token, page: 'explain', connection: connection, query: i }) }}\" onclick=\"return explain(this);\" data-target-id=\"explain-{{ i }}-{{ loop.parent.loop.index }}\">Explain query</a>
|
|
{% endif %}
|
|
</div>
|
|
|
|
<div id=\"formatted-query-{{ i }}-{{ loop.parent.loop.index }}\" class=\"sql-runnable hidden\">
|
|
{{ query.sql|doctrine_pretty_query }}
|
|
</div>
|
|
|
|
<div id=\"original-query-{{ i }}-{{ loop.parent.loop.index }}\" class=\"sql-runnable hidden\">
|
|
{{ (query.sql ~ ';')|doctrine_replace_query_parameters(query.params)|doctrine_pretty_query(highlight_only = true) }}
|
|
</div>
|
|
|
|
{% if query.explainable %}
|
|
<div id=\"explain-{{ i }}-{{ loop.parent.loop.index }}\" class=\"sql-explain\"></div>
|
|
{% endif %}
|
|
</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
{% endif %}
|
|
{% endfor %}
|
|
|
|
<h2>Database Connections</h2>
|
|
|
|
{% if not collector.connections %}
|
|
<div class=\"empty\">
|
|
<p>There are no configured database connections.</p>
|
|
</div>
|
|
{% else %}
|
|
{{ helper.render_simple_table('Name', 'Service', collector.connections) }}
|
|
{% endif %}
|
|
|
|
<h2>Entity Managers</h2>
|
|
|
|
{% if not collector.managers %}
|
|
<div class=\"empty\">
|
|
<p>There are no configured entity managers.</p>
|
|
</div>
|
|
{% else %}
|
|
{{ helper.render_simple_table('Name', 'Service', collector.managers) }}
|
|
{% endif %}
|
|
|
|
<h2>Second Level Cache</h2>
|
|
|
|
{% if not collector.cacheEnabled %}
|
|
<div class=\"empty\">
|
|
<p>Second Level Cache is not enabled.</p>
|
|
</div>
|
|
{% else %}
|
|
{% if not collector.cacheCounts %}
|
|
<div class=\"empty\">
|
|
<p>Second level cache information is not available.</p>
|
|
</div>
|
|
{% else %}
|
|
{% if profiler_markup_version == 1 %}
|
|
{{ helper.render_simple_table('Key', 'Value', collector.cacheCounts) }}
|
|
{% else %}
|
|
<div class=\"metrics\">
|
|
<div class=\"metric\">
|
|
<span class=\"value\">{{ collector.cacheCounts.hits }}</span>
|
|
<span class=\"label\">Hits</span>
|
|
</div>
|
|
|
|
<div class=\"metric\">
|
|
<span class=\"value\">{{ collector.cacheCounts.misses }}</span>
|
|
<span class=\"label\">Misses</span>
|
|
</div>
|
|
|
|
<div class=\"metric\">
|
|
<span class=\"value\">{{ collector.cacheCounts.puts }}</span>
|
|
<span class=\"label\">Puts</span>
|
|
</div>
|
|
</div>
|
|
{% endif %}
|
|
|
|
{% if collector.cacheRegions.hits %}
|
|
<h3>Number of cache hits</h3>
|
|
{{ helper.render_simple_table('Region', 'Hits', collector.cacheRegions.hits) }}
|
|
{% endif %}
|
|
|
|
{% if collector.cacheRegions.misses %}
|
|
<h3>Number of cache misses</h3>
|
|
{{ helper.render_simple_table('Region', 'Misses', collector.cacheRegions.misses) }}
|
|
{% endif %}
|
|
|
|
{% if collector.cacheRegions.puts %}
|
|
<h3>Number of cache puts</h3>
|
|
{{ helper.render_simple_table('Region', 'Puts', collector.cacheRegions.puts) }}
|
|
{% endif %}
|
|
{% endif %}
|
|
{% endif %}
|
|
|
|
<h2>Entities Mapping</h2>
|
|
|
|
{% for manager, classes in collector.entities %}
|
|
{% if collector.managers|length > 1 %}
|
|
<h3>{{ manager }} <small>entity manager</small></h3>
|
|
{% endif %}
|
|
|
|
{% if classes is empty %}
|
|
<div class=\"empty\">
|
|
<p>No loaded entities.</p>
|
|
</div>
|
|
{% else %}
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th scope=\"col\">Class</th>
|
|
<th scope=\"col\">Mapping errors</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
{% for class in classes %}
|
|
{% set contains_errors = collector.mappingErrors[manager] is defined and collector.mappingErrors[manager][class] is defined %}
|
|
<tr class=\"{{ contains_errors ? 'status-error' }}\">
|
|
<td>{{ class }}</td>
|
|
<td class=\"font-normal\">
|
|
{% if contains_errors %}
|
|
<ul>
|
|
{% for error in collector.mappingErrors[manager][class] %}
|
|
<li>{{ error }}</li>
|
|
{% endfor %}
|
|
</ul>
|
|
{% else %}
|
|
No errors.
|
|
{% endif %}
|
|
</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
{% endif %}
|
|
{% endfor %}
|
|
|
|
<script type=\"text/javascript\">//<![CDATA[
|
|
function explain(link) {
|
|
\"use strict\";
|
|
|
|
var targetId = link.getAttribute('data-target-id');
|
|
var targetElement = document.getElementById(targetId);
|
|
|
|
if (targetElement.style.display != 'block') {
|
|
Sfjs.load(targetId, link.href, null, function(xhr, el) {
|
|
el.innerHTML = 'An error occurred while loading the query explanation.';
|
|
});
|
|
|
|
targetElement.style.display = 'block';
|
|
link.innerHTML = 'Hide query explanation';
|
|
} else {
|
|
targetElement.style.display = 'none';
|
|
link.innerHTML = 'Explain query';
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
function sortTable(header, column, targetId) {
|
|
\"use strict\";
|
|
|
|
var direction = parseInt(header.getAttribute('data-sort-direction')) || 1,
|
|
items = [],
|
|
target = document.getElementById(targetId),
|
|
rows = target.children,
|
|
headers = header.parentElement.children,
|
|
i;
|
|
|
|
for (i = 0; i < rows.length; ++i) {
|
|
items.push(rows[i]);
|
|
}
|
|
|
|
for (i = 0; i < headers.length; ++i) {
|
|
headers[i].removeAttribute('data-sort-direction');
|
|
if (headers[i].children.length > 0) {
|
|
headers[i].children[0].innerHTML = '';
|
|
}
|
|
}
|
|
|
|
header.setAttribute('data-sort-direction', (-1*direction).toString());
|
|
header.children[0].innerHTML = direction > 0 ? '<span class=\"text-muted\">▲</span>' : '<span class=\"text-muted\">▼</span>';
|
|
|
|
items.sort(function(a, b) {
|
|
return direction * (parseFloat(a.children[column].innerHTML) - parseFloat(b.children[column].innerHTML));
|
|
});
|
|
|
|
for (i = 0; i < items.length; ++i) {
|
|
Sfjs.removeClass(items[i], i % 2 ? 'even' : 'odd');
|
|
Sfjs.addClass(items[i], i % 2 ? 'odd' : 'even');
|
|
target.appendChild(items[i]);
|
|
}
|
|
}
|
|
|
|
{% if profiler_markup_version == 1 %}
|
|
function toggleRunnableQuery(target) {
|
|
var targetSelector = target.getAttribute('data-toggle-selector');
|
|
var targetDataAltContent = target.getAttribute('data-toggle-alt-content');
|
|
var targetElement = document.querySelector(targetSelector);
|
|
target.setAttribute('data-toggle-alt-content', target.innerHTML);
|
|
|
|
if (targetElement.style.display != 'block') {
|
|
targetElement.style.display = 'block';
|
|
target.innerHTML = targetDataAltContent;
|
|
} else {
|
|
targetElement.style.display = 'none';
|
|
target.innerHTML = targetDataAltContent;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
{% endif %}
|
|
|
|
//]]></script>
|
|
{% endblock %}
|
|
|
|
{% macro render_simple_table(label1, label2, data) %}
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th scope=\"col\" class=\"key\">{{ label1 }}</th>
|
|
<th scope=\"col\">{{ label2 }}</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
{% for key, value in data %}
|
|
<tr>
|
|
<th scope=\"row\">{{ key }}</th>
|
|
<td>{{ value }}</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
{% endmacro %}
|
|
", "@Doctrine/Collector/db.html.twig", "/Volumes/Dev/Sources/Clients/taome/Nouveau_site/www/vendor/doctrine/doctrine-bundle/Resources/views/Collector/db.html.twig");
|
|
}
|
|
}
|