Creating Migrations
您可以在 Artisan CLI 上執行 migrate:make來新增一個 migration:
新增一個 Migration
1 |
php artisan migrate:make create_users_table |
migration 會被放置在 app/database/migrations 目錄下,而且會有一個讓框架決定migration優先順序的 timestamp。在新增 migration 時您也可以指定一個 –path 選項。該路徑應該相對於您安裝的根目錄:
1 |
php artisan migrate:make foo --path=app/migrations |
–table 和 –create 也可以被用來指名表格的名稱,不論使用哪個選項 migration 都會新增一個表格:
1 2 3 |
php artisan migrate:make add_votes_to_user_table --table=users php artisan migrate:make create_users_table --create=users |
Running Migrations
執行所有未完成的 migrations
1 |
php artisan migrate |
執行某個路徑下所有未完成的 migrations
1 |
php artisan migrate --path=app/foo/migrations |
執行某個package下所有未完成的 Migrations
1 |
php artisan migrate --package=vendor/package |
注意: 如果您在執行 migrations 收到 “class not found” 的錯誤訊息,試著執行 composer dump-autoload 指令來排除錯誤。
Rolling Back Migrations
復原最後的 Migration 操作
1 |
php artisan migrate:rollback |
復原所有的 migration操作
1 |
Rollback all migrations |
復原所有的 migration 並且再一次重新執行它們
1 2 3 |
php artisan migrate:refresh php artisan migrate:refresh --seed |
Database Seeding
Laravel 也可以使用 seed 類別以及測試資料去 “播種” 資料庫。所有的 seed 類別都被儲存在 app/database/seeds。Seed 類別可以用任何您希望的名稱命名,但或許還是要遵照一些合理的規則較好,例如 UserTableSeeder。預設會有一個已經定義好的 DatabaseSeeder 類別。在此類別中,您可以呼叫 call()方法去執行其他 seed 類別,並且可以控制播種( seeding )的順序。
Database Seed 類別範例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<span class="cp"><?php</span> <span class="k">class</span> <span class="nc">DatabaseSeeder</span> <span class="k">extends</span> <span class="nx">Seeder</span> <span class="p">{</span> <span class="k">public</span> <span class="k">function</span> <span class="nf">run</span><span class="p">()</span> <span class="p">{</span> <span class="nv">$this</span><span class="o">-></span><span class="na">call</span><span class="p">(</span><span class="s1">'UserTableSeeder'</span><span class="p">);</span> <span class="nv">$this</span><span class="o">-></span><span class="na">command</span><span class="o">-></span><span class="na">info</span><span class="p">(</span><span class="s1">'User table seeded!'</span><span class="p">);</span> <span class="p">}</span> <span class="p">}</span> <span class="k">class</span> <span class="nc">UserTableSeeder</span> <span class="k">extends</span> <span class="nx">Seeder</span> <span class="p">{</span> <span class="k">public</span> <span class="k">function</span> <span class="nf">run</span><span class="p">()</span> <span class="p">{</span> <span class="nx">DB</span><span class="o">::</span><span class="na">table</span><span class="p">(</span><span class="s1">'users'</span><span class="p">)</span><span class="o">-></span><span class="na">delete</span><span class="p">();</span> <span class="nx">User</span><span class="o">::</span><span class="na">create</span><span class="p">(</span><span class="k">array</span><span class="p">(</span><span class="s1">'email'</span> <span class="o">=></span> <span class="s1">'foo@bar.com'</span><span class="p">));</span> <span class="p">}</span> <span class="p">}</span> |
在 Artisan CLI 執行 db:seed 命令播種您的資料庫:
1 |
php artisan db:seed |
預設來說,db:seed 命令執行 DatabaseSeeder 類別,該類別可以被用來呼叫其他 seed 類別。然而,您也可以使用 –class 選項去指定某個 seeder 類別單獨執行。
1 |
php artisan db:seed --class=UserTableSeeder |
您也可以使用 migrate:refresh命令去播種您的 database,該指令同時也會復原並且重新執行所有的migration:
1 |
php artisan migrate:refresh --seed |