2014-10-03 36 views
0

我正在使用一個偵聽器進行查詢,正如許多人在stackoverflow上所建議的。這是語法Laravel聽取查詢錯誤

Event::listen('illuminate.query', function($query) 
{ 
    dd($query); 
}); 

,但我發現了以下錯誤

Call to undefined method Illuminate\Database\Query\Builder::listen() 

我還附上錯誤的屏幕截圖。

enter image description here

有誰知道是怎麼回事了?它是否被棄用?

+1

你碰巧有一個叫做'Event'的模型嗎? – 2014-10-03 09:46:41

回答

0

如果沒有其他型號或外牆用的名字Event你應該把它裏面例如app/start/local.php,它應該工作開箱:

我有這樣定義的:

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

謝謝你的回答,我仍然得到同樣的錯誤..非常奇怪!甚至沒有我的簡單版本。這就像它不知道listen()函數 – Notflip 2014-10-03 10:03:01

+1

@MiguelStevens你確定你沒有任何名字爲'Event'的類嗎?看看http://stackoverflow.com/questions/26175060/laravel-getting-only-certrain-data-from-pivot-table它似乎很有可能 – 2014-10-03 10:05:46