因為Laravel的ORM很方便,
我們幾乎不用寫SQL語法,
但是萬一我們想要知道Laravel用了什麼語法,
或是萬一發生錯誤,
或是需要通過優化SQL語法來提升性能時,
我們需要知道Laravel到底用了什麼語法,
來幫助我們判斷是否需要做修改,
或是應該要怎麼修改,
當然這一點Laravel也幫我們想好了.
Laravel有提供DB::getQueryLog()方法,
可以印出目前執行的SQL語法有哪些,
但是為了程式的效率,
這個功能預設是沒有開放的,
所以在要取得SQL語法之前,
必須先使用DB::enableQueryLog();
啟用紀錄SQL語法的功能.
app/Http/Controllers/UserAuthController.php的signUpProcess方法
//處理註冊資料
public function signUpProcess()
{
//前面省略
$input['password'] = Hash::make($input['password']);
//啟用紀錄SQL語法
DB::enableQueryLog();
//新增使用者資料
User::create($input);
//取得目前使用過的SQL語法
Log::notice(print_r(DB::getQueryLog(), true));
//後面省略
}
記得要引用
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
我們再執行一次表單,
再進入storage/logs底下今天的Log檔案裡面查看.
可以看出Laravel也是使用參數查詢的方式來存資料.