laravel的一些實用功能

gaoziyuecj發表於2018-10-14

讓lumen的dd() dump()像laravel一樣優雅

composer require symfony/var-dumper 

獲取執行的sql語句

  • 可檢視sql where引數等
    public function index()
    {
        DB::connection()->enableQueryLog(); // 開啟查詢日誌
        
        DB::table(`posts`)->paginate(5);  //要檢視的sql

        $queries = DB::getQueryLog(); // 獲取查詢日誌

        dd($queries); // 即可檢視執行的sql,執行的時間,傳入的引數等等
    }
  • 只能檢視簡單的sql不能看到傳入的引數
    DB::table(`posts`)->toSql(); 

查詢sql記錄

如果,你想要將日誌檔案儲存在 storage/logs 目錄中。需要更新: app/Providers/AppServiceProvider.php 裡的 boot() 函式

<?php

namespace AppProviders;

use IlluminateSupportServiceProvider;
use DB;
use Log;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        //
        // 新增程式碼
        DB::listen(function ($query) {
            Log::info(
                $query->sql,
                $query->bindings,
                $query->time
            );
        });
    }

    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }
}

Laravel 如何在模型事件中獲取某欄位修改前的值

Issue::saving(function(Issue $issue){
    if ($issue->isDirty(`title`)) {
        $user = Auth::user()->username;
        $oldTitle = $issue->getOriginal(`title`); // 原始值
        $newTitle = $issue->title;                // 新值
        ActionLog::log("$user 把標題 $oldTitle 修改為 $newTitle");
    }
});

相關文章