laravel、laravel-admin問題 - 筆記搬遷2

  • 1、Controller Construct Session Changes in Laravel 5.3

v5.3版本之後,控制的構造方法先於中間件的調用。所以在該方法內無法獲取到請求裏的session之類的東西。

解決:

namespace App\Http\Controllers;

use App\User;
use Illuminate\Support\Facades\Auth;
use App\Http\Controllers\Controller;

class ProjectController extends Controller
{
    public function __construct()
    {
        $this->middleware(function ($request, $next) {
            $this->projects = Auth::user()->projects;

            return $next($request);
        });
    }
}

注意:作者說,在構造方法裏處理請求是一種不好的行爲……

  • 2、查看當前頁面PHP的所有變量
    get_defined_vars()

  • 3、laravel-admin 自定義的form控件入值

$form->saving(function($form){
    $form->model()->attr_values = request()->input('attr_values');
});
  • 4、手動添加homestead.box時自定義版本號
metadata.json
{
    "name": "laravel/homestead",  # 添加後的box名稱
    "versions": [{
        "version": "3.0.0", # 版本號
        "providers": [{
            "name": "virtualbox",
            "url": "file://E:/xunlei/Laravel-Homestead.box"  # 下載到本地的box
        }]
    }]
}

執行以下命令

vagrant box add metadata.json
  • 5、laravel-admin更新後,強制發佈靜態資源
php artisan vendor:publish --tag=laravel-admin-assets --force
  • 6、延遲預加載模型
$cate->load(['slide' => function ($query) {
            $query->select('s_id', 's_name', 'pic', 'c_id')->publish()->date();
        }]);

如上,想查出關聯模型數據,select時,必須要有 join 的字段(c_id),否則爲空

7、模型觀察者

修改觸發條件必須是使用了 save() 方法,即使像 increment() 也不可以。

8、dingo.api

    必須在api裏定義路由,並且正確,否則會影響web路由

9、查詢構造器

increment() 方法對應的update方法 update([
                                        'num' => \DB::raw('`num` + 5')
                                       ])

10、隊列

如果指定了隊列名稱,則運行隊列處理器時,必須加上隊列名稱參數。如,php artisan queue:work redis --queue=capitalbonus
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章