File tree Expand file tree Collapse file tree 1 file changed +37
-0
lines changed Expand file tree Collapse file tree 1 file changed +37
-0
lines changed Original file line number Diff line number Diff line change 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+ }
You can’t perform that action at this time.
0 commit comments