Skip to content

Commit b9a329a

Browse files
authored
Merge pull request #10 from XEngine/master
Added console output
2 parents 8ecd743 + fd3ac6e commit b9a329a

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

src/Outputs/Console.php

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
<?php
2+
namespace BeyondCode\QueryDetector\Outputs;
3+
use Illuminate\Support\Collection;
4+
use Symfony\Component\HttpFoundation\Response;
5+
6+
class Console implements Output
7+
{
8+
public function output(Collection $detectedQueries, Response $response)
9+
{
10+
if ($response->isRedirection()) {
11+
return;
12+
}
13+
$content = $response->getContent();
14+
$outputContent = $this->getOutputContent($detectedQueries);
15+
$pos = strripos($content, '</body>');
16+
if (false !== $pos) {
17+
$content = substr($content, 0, $pos) . $outputContent . substr($content, $pos);
18+
} else {
19+
$content = $content . $outputContent;
20+
}
21+
// Update the new content and reset the content length
22+
$response->setContent($content);
23+
$response->headers->remove('Content-Length');
24+
}
25+
protected function getOutputContent(Collection $detectedQueries)
26+
{
27+
$output = '<script type="text/javascript">';
28+
$output .= "console.warn('Found the following N+1 queries in this request:\\n\\n";
29+
foreach ($detectedQueries as $detectedQuery) {
30+
$output .= "Model: ".addslashes($detectedQuery['model']). " => Relation: ".addslashes($detectedQuery['relation']);
31+
$output .= " - You should add \"with(\'".$detectedQuery['relation']."\')\" to eager-load this relation.";
32+
$output .= "\\n";
33+
}
34+
$output .= "')";
35+
$output .= '</script>';
36+
return $output;
37+
}
38+
}

0 commit comments

Comments
 (0)