Skip to content

Commit c0a305f

Browse files
authored
Create Console.php
Added console.warn method to see outputs in the developer tool console
1 parent 8ecd743 commit c0a305f

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

src/Outputs/Console.php

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

0 commit comments

Comments
 (0)