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