lavacharts hacer graficas example consoletvs composer como laravel laravel-4

hacer - consoletvs laravel



Laravel 4 SQL log/console (8)

¿Hay algo similar en Laravel que le permita ver el SQL real que se está ejecutando? En Rails, por ejemplo, puede ver el SQL en la consola. En Django tienes una barra de herramientas.

¿Hay algo así en Laravel 4?

Para aclarar: Mi pregunta es cómo hacerlo sin código. ¿Hay algo incorporado en Laravel que no requiera que escriba código en la aplicación?

ACTUALIZACIÓN : Preferiblemente, también me gustaría ver consultas CLI (por ejemplo, php artisan migrate )


Hay un paquete Composer para eso: https://packagist.org/packages/loic-sharma/profiler

Le dará una barra de herramientas en la parte inferior con consultas SQL, mensajes de registro, etc. Asegúrese de establecer la debug en verdadero en su configuración.


Hago esto en Laravel 4.

Solo app/start/global.php una vez en app/start/global.php o en cualquier app/start/global.php lugar, pero asegúrese de que esté cargado y luego comenzará a registrar todas sus consultas SQL.

Event::listen("illuminate.query", function($query, $bindings, $time, $name){ /Log::sql($query."/n"); /Log::sql(json_encode($bindings)."/n"); });


Se me ocurrió una forma muy simple (si está utilizando php artisan serve y PHP 5.4): agréguelo a app/start/local.php :

DB::listen(function($sql, $bindings, $time) { file_put_contents(''php://stderr'', "[SQL] {$sql} in {$time} s/n" . " bindinds: ".json_encode($bindings)."/n"); });

pero esperando encontrar una solución más oficial.

Esto imprimirá sentencias SQL como esta:

[SQL] select 1 in 0.06s



Aquí hay un fragmento de JavaScript rápido que puedes incluir en tu plantilla de página maestra. Siempre que esté incluido, todas las consultas se enviarán a la Consola JavaScript de su navegador. Los imprime en una lista fácil de leer, por lo que es sencillo navegar por su sitio y ver qué consultas se están ejecutando en cada página.

Cuando termine de depurar, simplemente elimínelo de su plantilla.

<script type="text/javascript"> var queries = {{ json_encode(DB::getQueryLog()) }}; console.log(''/****************************** Database Queries ******************************/''); console.log('' ''); $.each(queries, function(id, query) { console.log('' '' + query.time + '' | '' + query.query + '' | '' + query.bindings[0]); }); console.log('' ''); console.log(''/****************************** End Queries ***********************************/''); </script>


Si está utilizando Laravel 4, use esto:

$queries = DB::getQueryLog(); $last_query = end($queries);


Este código se toma directamente de otra fuente, pero quería facilitarlo ya que funcionó para mí en PHPStorm usando la ventana de mi terminal. Pude ver un registro completo pero, después de iniciar sesión, había algo de Sentry .

1.add

''log''=>true

dentro de su config/database.php y debajo del lugar donde está el nombre de la base de datos ex.mysql

a continuación, agregue el código siguiente a routes.php sobre todo no bajo ninguna configuración de ruta, ya que puede hacerlo bajo una configuración de ruta dada, pero solo verá cuando se llame a esa ruta.

para ver esta salida /goto / app/storage/log/somelogfile.log

if (Config::get(''database.log'', false)) { Event::listen(''illuminate.query'', function($query, $bindings, $time, $name) { $data = compact(''bindings'', ''time'', ''name''); // Format binding data for sql insertion foreach ($bindings as $i => $binding) { if ($binding instanceof /DateTime) { $bindings[$i] = $binding->format(''/'Y-m-d H:i:s/'''); } else if (is_string($binding)) { $bindings[$i] = "''$binding''"; } } // Insert bindings into query $query = str_replace(array(''%'', ''?''), array(''%%'', ''%s''), $query); $query = vsprintf($query, $bindings); Log::info($query, $data); }); }

No te olvides de hacer punto de interrupción .... o hacer ping me :)


En la instancia de QueryBuilder hay un método paraSql () .

echo DB::table(''employees'')->toSql()

volvería:

select * from `employees`

Este es el método más fácil de mostrar las consultas.