1>使用artisan命令make:migration來建立一個新的遷移: php
php artisan make:migration create_sutdents_table數據庫
--table用來指定表名app
php artisan make:migration create_students_table --table=students框架
--create建立一個新的數據表(有表名和基本字段)dom
php artisan make:migration create_students_table --create=students函數
--path選項用來自定義輸出路徑post
php artisan make:migration create_students_table --path=app/migrations學習
指定生成遷移的自定義輸出路徑,在執行make:migration命令時可使用--path選項,提供的路徑應該是相對於應用根目錄的。this
下面是我生成遷移文件的情形spa
//1>php artisan make:migration create_sutdents_table中的內容 public function up() { // } public function down() { // } //2>php artisan make:migration create_sutdents_table --table=students中的內容 public function up() { Schema::table('students', function (Blueprint $table) { // }); } public function down() { Schema::table('students', function (Blueprint $table) { // }); } //3>php artisan make:migration create_sutdents_table --create=students中的內容 public function up() { Schema::create('students', function (Blueprint $table) { $table->increments('id'); $table->timestamps(); }); } public function down() { Schema::drop('students'); }
遷移類包含了兩個方法:up和down。up方法用於新增表,列或者索引到數據庫,而down方法就是up方法的反操做,和up裏的操做相反。
關於具體如何編輯前一結構,能夠參見官方文檔
在控制檯執行如下命令,便可執行遷移文件,生成或更新相應的表。
php artisan migrate
1>回滾上一次的遷移
php artisan migrate:rollback
2>回滾全部遷移
php artisan migrate:reset
3> 回滾全部遷移而且再執行一次
php artisan migrate:refresh
1>使用help來查看信息
<1>php artisan help make:migration來查看更多的選項
2>咱們有多個遷移文件的時候,運行遷移命令後,是否全部文件都會執行
咱們如今運用基本的遷移 php artisan migrate
第一次運行,顯示:tabale created successfully
第二次運行,顯示:nothing to migrate
由於咱們的數據庫已經遷移成功沒有變化了,因此不會再執行上次的文件
接下來咱們運行回滾操做 php artisan migrate:rollback
第一次運行,顯示:回滾文件信息
第二次運行,顯示:nothing to rollback
一樣,已經沒有能夠回滾的信息了,不會重複執行
你能夠經過 make:seeder artisan命令來生成一個 Seeder。全部經過框架生成的 Seeder 都將被放置在 database/seeds 路徑:
php artisan make:seeder StudentsTableSeeder
在 seeder 類裏只有一個默認方法:run。咱們能夠在這個run方法中給數據庫添加任何數據(在這裏咱們可使用查詢構造器或者Eloquent模型工廠)
咱們給run方法添加以下內容
<?php
use Illuminate\Database\Seeder; class StudentsTableSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run(){ DB::table('students')->insert([ 'name' => str_random(10), ]); } }
而後咱們運行命令,調用StudentsTableSeeder類 php artisan db:seed --class=StudentsTableSeeder
咱們能夠發現數據表中新插入了一條數據
這裏要注意一個問題,由於我設計數據庫的時候增長了created_at和updated_at字段,使用查詢構造器並不能自動更新這兩個字段
你能夠在這個類中使用 call 方法來運行其它的 seed 類,以藉此控制數據填充的順序。
咱們將咱們生成的StudentsTableSeeder類加入到 run方法中
<?php
use Illuminate\Database\Seeder; use Illuminate\Database\Eloquent\Model; class DatabaseSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run(){ Model::unguard(); // $this->call(UserTableSeeder::class); //這裏咱們能夠調用更多生成的填充數據類,便於管理 $this->call(StudentsTableSeeder::class); Model::reguard(); } }
咱們運行命令,調用DatabaseSeeder類
php artisan db:seed
咱們一樣能夠發現數據表中多了一條數據
首先,學習如何定義你的工廠,一旦工廠被定義(位於database/fatories文件夾下),就能使用 factory 這個輔助函數函數來添加數據到數據庫。