artisan 命令使用過程的一些記錄!
==資料遷移==
之前一直對資料遷移很感興趣,也看過了幾遍文件,一直沒怎麼理解,也沒怎麼深入研究,今天得空,認真看了文件,百度了一些相關文章 點選這裡,親自試了一些常用的操作,特寫此文章記錄
遷移的建立、執行和回滾
- 建立遷移
php artisan make:migration create_news_table
錯誤寫法:
php artisan migrate:make create_news_table
示例結果:
- 執行遷移
php artisan migrate
示例結果:
如果繼續執行 php artisan migrate ,因為沒有新的可執行 migrate ,將不執行任何動作
示例結果:
- 執行回滾
php artisan migrate:rollback
示例結果:
- 執行修改欄位型別
執行修改欄位型別的時候需要composer requires doctrine/dbal
安裝doctrine/dbal:
資料庫的記錄(migrations)
- 資料庫記錄如下
每執行一次遷移(php artisan migrate),batch 加 1(不管這次執行了幾個遷移檔案,一次執行的檔案batch 一樣),
資料庫儲存結果如下:
如果執行回滾,資料庫最近一次執行的所有遷移將進行回滾,回滾完成,資料庫遷移記錄結果將會被刪除!如果手動刪除資料庫記錄,則回滾的時候,將不對該遷移回滾,並且對應的遷移在再次執行 php artisan migrate的時候將會重新被執行,所以最好不要隨意刪除 migrations 表中的資料
執行遷移回滾原理
通過artisan 建立的遷移檔案中包括兩個function (up,down),其中up 是在執行遷移的時候執行的,而down 也剛好就是對立的,回滾的時候執行
示例:
例如1:
public function up(){
//建立表,執行遷移的時候執行
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
});
}
public function down(){
//刪除表,回滾的時候執行
Schema::drop('users');
}
例如2:
public function up()
{
Schema::table('users', function($table) {
$table->renameColumn('email', 'user_email'); //修改欄位名稱
});
}
public function down()
{
Schema::table('news', function($table) {
$table->renameColumn('user_email', 'email'); //回滾的時候再修改成原來的
});
}
總結
- 遷移是用來記錄每次的資料庫操作的,不管是建立表,還是修改一個欄位名稱,都需要單獨建立一個遷移檔案
- 遷移檔案中,包含一個up 和一個down,是兩個對立的方法,如果up建立表,down就是刪除表,反之亦然!
- 每次執行遷移都會記錄到遷移記錄表中(magrition 表),回滾則刪除相應記錄通過batch 來判斷是那一批遷移
==vendor:publish==
用來將包中的 配置檔案,或者預定義模板進行釋出 配置檔案一般發不到 config 目錄,模板一般釋出到 resource/views/vendor 目錄
php artisan vendor:publish
比如郵件模板 可以 發不到 vendor ,進行修改,模板將被替換為 最新修改的模板
註冊釋出的方式
在包的 服務提供者的 boot 方法 中註冊
public function boot()
{
//
$this->publishes([
__DIR__ . '/config/qcloudcos.php' => config_path('qcloudcos.php'),
]);
}
錯誤解決
執行資料填充報錯
php artisan db:seed
[ReflectionException]
Class ArticleCatSeeder does not exist
- 先執行 composer dump-autoload,在執行就ok 了
==php artisan 命令總結==
全域性相關
php artisan:顯示詳細的命令列幫助資訊,同 php artisan list
php artisan –help:顯示幫助命令的使用格式,同 php artisan help
php artisan –version:顯示當前使用的 Laravel 版本
php artisan changes:列出當前版本相對於上一版本的主要變化
php artisan down:將站點設為維護狀態
php artisan up:將站點設回可訪問狀態
php artisan optimize:優化應用程式效能,生成自動載入檔案,且產生聚合編譯檔案 bootstrap/compiled.php
php artisan dump-autoload:重新生成框架的自動載入檔案,相當於 optimize 的再操作
php artisan clear-compiled:清除編譯生成的檔案,相當於 optimize 的反操作
php artisan migrate:執行資料遷移
php artisan routes:列出當前應用全部的路由規則
php artisan serve:使用 PHP 內建的開發伺服器啟動應用 【要求 PHP 版本在 5.4 或以上】
php artisan tinker:進入與當前應用環境繫結的 REPL 環境,相當於 Rails 框架的 rails console 命令
php artisan workbench 組織名/包名:這將在應用根目錄產生一個名為 workbench 的資料夾,然後按 組織名/包名 的形式生成一個符合 Composer 標準的包結構,並自動安裝必要的依賴【需要首先完善好 app/config/workbench.php 檔案的內容】
功能相關
php artisan cache:clear:清除應用程式快取
php artisan command:make 命令名:在 app/commands 目錄下生成一個名為 命令名.php 的自定義命令檔案
php artisan controller:make 控制器名:在 app/controllers 目錄下生成一個名為 控制器名.php 的控制器檔案
php artisan db:seed:對資料庫填充種子資料,以用於測試
php artisan key:generate:生成一個隨機的 key,並自動更新到 app/config/app.ph 的 key 鍵值對
php artisan migrate:install:初始化遷移資料表
php artisan migrate:make 遷移名:這將在 app/database/migrations 目錄下生成一個名為 時間+遷移名.php 的資料遷移檔案,並自動執行一次 php artisan dump-autoload 命令
php artisan migrate:refresh:重置並重新執行所有的資料遷移
php artisan migrate:reset:回滾所有的資料遷移
php artisan migrate:rollback:回滾最近一次資料遷移
php artisan session:table:生成一個用於 session 的資料遷移檔案