2014-10-07 37 views
0

我試圖將實際的SQL查詢輸出到屏幕。我已經添加了以下路線:將SQL查詢轉儲到Laravel中的屏幕

// Display all SQL executed in Eloquent 
Event::listen('illuminate.query', function($query) 
{ 
    var_dump($query); 
}); 

這個作品大多,但一些價值出來爲問號:

select DATE_FORMAT(DATE(`created_at`),'%b %d') as `date`, created_at, COUNT(*) as `count` 
from `contacts` 
where `created_at` > ? and `list_name` = ? or `list_name` = ? or `list_name` = ? 
group by `date` 
order by `created_at` asc 

有沒有辦法得到充分的查詢輸出的實際值我'動態添加,而不是無益'?字符?

回答

2

是的,你可以使用此代碼:

Event::listen(
    'illuminate.query', 
    function ($sql, $bindings, $time) { 
     $sql = str_replace(array('%', '?'), array('%%', "'%s'"), $sql); 
     $full_sql = vsprintf($sql, $bindings); 

     file_put_contents(storage_path() . DIRECTORY_SEPARATOR . 'logs' 
      . DIRECTORY_SEPARATOR . 'sql_log.sql', $full_sql . ";\n", 
      FILE_APPEND); 
    } 
); 

在我的我保存輸出到當地的環境文件,當然你也可以在屏幕上顯示此查詢。

+0

非常感謝Marcin,那是FAST – 2014-10-07 09:43:05

+0

@ChrisJAllen我只需要從我的代碼複製它:) – 2014-10-07 09:43:55