- 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