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