laravel入門

參考
https://laravelacademy.org/php

概念 單詞

  • 契約Contract 就是接口
  • repository 倉庫(封裝數據訪問,能夠搜索:repository模式)
  • Container 容器
  • ServiceProvider 服務提供者
  • Foundation 基礎

$this->app->bind() 綁定契約(接口)
$app->make()
boot extend 覆蓋 修改驅動css

  • 提示
  • 英文單詞的 動詞,名詞,單數,複數 不一樣地方用不一樣的單詞.例如 seed和seeder

路由

## 生成資源控制器路由 ,命令里加上 --resoure 生成帶crud方法的控制器
php artisan make:controller PostController --resource
#路由一次性綁定資源方法 curd等
Route::resource('post', 'PostController');

#模板內使用路由命名 生成url
<a href="{{ route('user.profile', ['id' => 100]) }}">
#控制器裏使用 路由名字生成url
route('post.show', [$id]);
#路由分組,組內公用中間件 好比登陸校驗
https://laravelacademy.org/post/9612.html#toc_0
#兜底路由,
Route::fallback(function () {
    return '沒設置路由,會到這裏';
});
#頻率限制 利用內置的throttle中間件實現
Route::middleware('throttle:60,1')->group(function () {
    Route::get('/user', function () {
        //
    });
});

視圖

#在視圖間共享變量
咱們能夠在某個服務提供者如 AppServiceProvider 的 boot 方法中定義共享的視圖變量:
view()->share('siteName', 'Laravel學院');
view()->share('siteUrl', 'https://laravelacademy.org'); 
#經過數組指定多個視圖組件
view()->composer(['partials.header', 'partials.footer'], function ($view) { 
    $view->with('posts', Post::recent()); 
});
視圖
變量自動htmlentities轉義防止xss ,若是不想自動轉義用{!! $variable !!},例如富文本編輯器的代碼;
#註釋
{{-- 註釋內容 --}}

npm和前端編譯

npm install 安裝 前端庫
package.json 可類比爲前端的 composer.json,咱們經過 npm install 安裝該文件中定義的依賴
運行 npm run dev 編譯前端資源
大多數時候咱們須要在 resources/js/app.js 和 resources/sass/app.scss 中編寫代碼,引入其它模塊,而後運行 npm run dev 就能夠了html

框架重點

讀一遍框架自帶的服務提供者源碼能夠幫助你熟悉各類類是怎麼綁定進容器的,都綁定到哪些鍵上。這是學習 Laravel 框架底層究竟如何運轉的最佳實踐。前端

開發

config
根目錄.envlaravel

artisan

php artisan up
php artisan down數據庫

測試 分爲 單元測試和功能測試

建立一個 .env.testing 文件npm

#執行測試
測試前清除配置緩存 php artisan config:clear
vendor/bin/phpunit
#運行單個測試用例
vendor/bin/phpunit --filter=UserTest

小提示

在開發與 Laravel 進行交互的第三方擴展包時,最好選擇注入 Laravel 契約 而不使用 Facades 。由於擴展包是在 Laravel 以外構建,你沒法使用 Laravel Facades 測試輔助函數json

路由中間件

內置了 表單csrf,表單token 數組

自定義中間件緩存

#該命令會在 app/Http/Middleware 目錄下建立一個新的CheckAge 類
php artisan make:middleware CheckAge

常見契約 Contracts

驗證email, user包含 email_verified_at 字段

常見方法

only() except() all has exists
$request->input() 智能讀取變量 支持json(須要header頭設置application/json)

表單驗證 $request->validate()
created_at
updated_at

Artisan 命令

#生成可調用的控制器
php artisan make:controller ShowProfile --invokable
#生成資源控制器 --resource參數自帶curd方法的自動生成
php artisan make:controller PhotoController --resource
#建立模型  加上-m參數順便建立遷移文件
php artisan make:model -m Models/Post
#模型工廠文件
php artisan make:factory PostFactory --model=Models/Post

#Schema 創建表
php artisan session:table

#執行數據遷移
php artisan migrate
#所有down,再次up,填充數據
php artisan migrate:refresh --seed
#回滾最後一批遷移
php artisan migrate:rollback
#回滾全部遷移,down方法
php artisan migrate:reset

#刪除全部表 重建數據庫(破壞性,若是有本身手動錄入的表數據請不要執行此操做)
php artisan migrate:fresh
#刪除全部表 重建數據庫 並填充數據
php artisan migrate:fresh --seed

#生成數據遷移文件 建立新聞表
php artisan make:migration create_news_table --create news
#複雜表單驗證 創建類去處理
php artisan make:request StoreBlogPost
#建立auth所需視圖和控制器
php artisan make:auth
命令來生成密鑰
php artisan key:generate

數據填充

#建立填充類對象
php artisan make:seeder PostsTableSeeder

運行填充器
編寫好填充器類以後,須要經過 dump-autoload 命令從新生成 Composer 的自動加載器:

composer dump-autoload
運行以後可使用 Artisan 命令 db:seed 來填充數據庫。
默認狀況下,db:seed 命令運行 DatabaseSeeder 類,
不過,你也可使用 --class 選項來指定你想要運行的獨立的填充器類:

php artisan db:seed
php artisan db:seed --class=UsersTableSeeder

你還可使用 migrate:refresh 命令來填充數據庫,該命令還能夠回滾並從新運行全部遷移,這在須要徹底重建數據庫時頗有用:
php artisan migrate:refresh --seed

#填充中文數據
$faker = Faker\Factory::create('zh_CN'); 
或者修改配置config/app.php    'faker_locale' => 'zh_CN',
Factory 只是生成了測試數據,可是插入還要 用模型和DB類去寫;

數據庫操做

DB:: 外觀類操做數據庫 查詢構建器
where whereIn whereBetween orderBy first
https://laravelacademy.org/po...
https://laravelacademy.org/po...

模型 Eloquent ORM

https://laravelacademy.org/po...
Eloquent ORM 每一個表對應一個類
模型有些默認規則,若是與規則不符,須要從新指定 如表名,主鍵名,時間戳,鏈接的庫,

注:因爲 Eloquent 模型本質上就是查詢構建器,你能夠在 Eloquent 查詢中使用查詢構建器的全部方法。
#生成模型文件,帶上 -m 能夠建立數據遷移文件
php artisan make:model Flight -m

組塊結果集chunk 
遊標cursor
根據主鍵獲取記錄find $flight = App\Flight::find(1);//能夠傳數組查多條
獲取單條記錄first  $flight = App\Flight::where('active', 1)->first();
若是無結果跑出異常findOrFail 和 firstOrFail

fillable guarded 二選一  賦值權限設置

控制器 中間件

部署後

#生成路由緩存,
php artisan route:cache
#清除路由緩存
php artisan route:clear

問題:

  • 安裝擴展 數據庫報錯

清除配置緩存試試 php artisan config:clear

  • SymfonyComponentConsoleExceptionRuntimeException: Too many arguments, expected arguments "command".

執行單元測試的時候報的錯,測試裏寫了執行一個 artisan 命令,命令寫錯了. 複製的命令是中文字符

相關文章
相關標籤/搜索