laravel框架總結(十四) -- 數據遷移和數據填充

一.數據遷移

1.建立一個遷移

1>使用artisan命令make:migration來建立一個新的遷移:  php

  php artisan make:migration create_sutdents_table數據庫

新的遷移位於database/migrations目錄下,每一個遷移文件名都包含時間戳從而容許Laravel判斷其順序。
2>其餘一些選項

  --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

  

三個遷移文件的主要內容以下,感覺下up和down方法中內容的不一樣
//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'); }

2.遷移結構

遷移類包含了兩個方法:up和down。up方法用於新增表,列或者索引到數據庫,而down方法就是up方法的反操做,和up裏的操做相反。

關於具體如何編輯前一結構,能夠參見官方文檔

3.實施遷移

在控制檯執行如下命令,便可執行遷移文件,生成或更新相應的表。

  php artisan migrate

4.回滾遷移

1>回滾上一次的遷移

php artisan migrate:rollback

2>回滾全部遷移

php artisan migrate:reset

3> 回滾全部遷移而且再執行一次

php artisan migrate:refresh

5.其它

1>使用help來查看信息

  <1>php artisan help make:migration來查看更多的選項

    

<2>php artisan help migrate
  
<3>php artisan help migrate:refresh
  
 

2>咱們有多個遷移文件的時候,運行遷移命令後,是否全部文件都會執行

  咱們如今運用基本的遷移 php artisan migrate

    第一次運行,顯示:tabale created successfully

    第二次運行,顯示:nothing to migrate

  由於咱們的數據庫已經遷移成功沒有變化了,因此不會再執行上次的文件

  接下來咱們運行回滾操做 php artisan migrate:rollback

    第一次運行,顯示:回滾文件信息

    第二次運行,顯示:nothing to rollback

  一樣,已經沒有能夠回滾的信息了,不會重複執行

  

3>php artisan migrate:refresh操做
  
 

二.數據填充

1.生成一個seeder文件

  你能夠經過 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字段,使用查詢構造器並不能自動更新這兩個字段

2.Laravle 默認爲你定義了一個 DatabaseSeeder 類。

  你能夠在這個類中使用 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

  咱們一樣能夠發現數據表中多了一條數據

3.咱們剛纔在run方法中使用的時候查詢構造器,咱們還可使用Eloquent模型工廠

  首先,學習如何定義你的工廠,一旦工廠被定義(位於database/fatories文件夾下),就能使用 factory 這個輔助函數函數來添加數據到數據庫。

相關文章
相關標籤/搜索