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