Laravel5.2中實作資料庫遷移與資料填充的實例

黄舟
發布: 2023-03-15 21:46:01
原創
1657 人瀏覽過

一、資料庫遷移

Laravel 的資料庫遷移提供了資料庫、表格、欄位、索引的一系列相關操作。下面以建立友情連結表為例。

1. 建立遷移

使用Artisan 指令 php artisan make:migration create_links_table 

#這樣就在 database/migrations 目錄下產生一個名為 2017_05_06_151645_create_links_table.php 檔案。名字的前半段 "2017_05_06_151645_" 是 Laravel 增加的時間戳記。後半段 "create_links_table.php" 是表名。

2. 寫邏輯

然後,打開這個遷移類別 2017_05_06_151645_create_links_table.php ,裡面有兩個方法: up() 和 down() 。 up() 方法建表,down() 方法刪表。


<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateLinksTable extends Migration
{
    /**
     * 执行迁移
     *
     * @return void
     */
    public function up()
    {
        Schema::create(&#39;links&#39;, function (Blueprint $table){
            $table->engine = &#39;MyISAM&#39;;
            $table->increments(&#39;id&#39;);
            $table->string(&#39;name&#39;)->default(&#39;&#39;)->comment(&#39;名称&#39;);
            $table->string(&#39;title&#39;)->default(&#39;&#39;)->comment(&#39;标题&#39;);
            $table->string(&#39;url&#39;)->default(&#39;&#39;)->comment(&#39;地址&#39;);
            $table->integer(&#39;sort&#39;)->default(50)->comment(&#39;排序&#39;);
        });
    }
    
    /**
     * 回滚迁移
     *
     * @return void
     */
    public function down()
    {
        Schema::drop(&#39;links&#39;);
    }
}

2017_05_06_151645_create_links_table.php
登入後複製

3. 執行遷移

使用Artisan 指令  php artisan migrate 

現在,資料庫中已經創建了一張hd_links 表和一張記錄遷移的表hd_migrations ("hd_" 是配置的表前綴):

注意:如果手動刪除了遷移類且檔案無法重新創建,使用composer dump-autoload 指令優化一下自動載入就可以重新建立遷移了。

 

二、資料填入

可用來測試,為資料庫中的表格填入一些資料。

1. 建立填充

使用Artisan 指令   php artisan make:seeder LinksTableSeeder 

#這將在database/seeds 目錄下產生一個名為 LinksTableSeeder.php 的友情連結填入類別。

2. 寫邏輯

然後,開啟這個 LinksTableSeeder.php 文件,加入兩個測試記錄。


<?php
use Illuminate\Database\Seeder;
class LinksTableSeeder extends Seeder
{
    /**
     * 运行数据库填充
     *
     * @return void
     */
    public function run()
    {
        $data = [
            [
                &#39;name&#39; => &#39;Laravel 中文社区&#39;,
                &#39;title&#39; => &#39;Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区 - Powered by PHPHub&#39;,
                &#39;url&#39; => &#39;https://laravel-china.org/&#39;,
                &#39;sort&#39; => &#39;49&#39;
            ],
            [
                &#39;name&#39; => &#39;GitHub&#39;,
                &#39;title&#39; => &#39;GitHub is where people build software. More than 21 million people use...&#39;,
                &#39;url&#39; => &#39;https://github.com&#39;,
                &#39;sort&#39; => &#39;49&#39;
            ]
        ];

        DB::table(&#39;links&#39;)->insert($data);
    }
}
登入後複製

3. 呼叫填充

在database/seeds 目錄下的 DatabaseSeeder.php 這個資料庫填充類別中,在run() 方法內呼叫填充。

DatabaseSeeder.php 檔案內容:


<?php
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
    /**
     * 运行数据库填充
     *
     * @return void
     */
    public function run()
    {
        $this->call(LinksTableSeeder::class);
    }
}
登入後複製

4.執行填入

使用Artisan 指令  php artisan db:seed 

現在,資料庫中的hd_links 表格就有了2筆記錄:

以上是Laravel5.2中實作資料庫遷移與資料填充的實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!