Lavarel博客数据库

1. 数据迁移

php artisan make:migration create_users_table --create=users

Schema::create('users', function (Blueprint $table) {
    $table->increments('id');
    $table->string('username');
    $table->string('password');
    $table->string('email')->unique();
    $table->string('avatar');
    $table->rememberToken();
    $table->timestamps();
});
php artisan make:migration create_password_resets_table --create=password_resets

Schema::create('password_resets', function (Blueprint $table) {
    $table->string('email')->index();
    $table->string('token')->index();
    $table->timestamps('created_at');
});
php artisan make:migration create_posts_table --create=posts

Schema::create('posts',function(Blueprint $table){
    $table->increments('id');
    $table->string('title')->nullable();
    $table->string('thumb')->nullable()->default('');
    $table->text('content')->nullable();
    $table->text('markdown')->nullable();
    $table->string('flag')->unique();
    $table->integer('user_id');
    $table->integer('category_id')->default('0');
    $table->integer('views')->nullable()->default('0');
    $table->integer('comments')->nullable()->default('0');
    $table->string('ip')->nullable()->default('0.0.0.0');
    $table->softDeletes();
    $table->timestamps();
});
php artisan make:migration create_links_table --create=links

Schema::create('links', function (Blueprint $table) {
    $table->increments('id');
    $table->string('name')->nullabel()->default('');
    $table->string('logo')->nullabel()->default('');
    $table->string('url')->nullabel()->default('');
    $table->string('ip')->nullabel()->default('0.0.0.0');
    $table->string('group')->nullabel()->default('');
    $table->timestamps();
});
php artisan make:migration create_comments_table --create=comments

Schema::create('comments', function (Blueprint $table) {
    $table->increments('id');
    $table->integer('pid')->nullable()->default('0');
    $table->integer('post_id')->nullable()->default('0');
    $table->string('name')->nullable()->default('');
    $table->string('email')->nullable()->default('');
    $table->string('url')->nullable()->default('');
    $table->string('ip')->nullable()->default('0.0.0.0');
    $table->text('content')->nullable();
    $table->text('markdown')->nullable();
    $table->timestamps();
});
php artisan make:migration create_navs_table --create=navs

Schema::create('navs', function (Blueprint $table) {
    $table->increments('id');
    $table->string('name')->nullable()->default('');
    $table->string('url')->nullable()->default('');
    $table->integer('sort')->nullable()->default('0');
    $table->timestamps();
});
php artisan make:migration create_tags_table --create=tags

Schema::create('tags', function (Blueprint $table) {
    $table->increments('id');
    $table->string('name')->nullabel()->default('');
    $table->string('flag')->nullabel()->default('0');
    $table->timestamps();
});
Schema::create('posts_tags', function (Blueprint $table) {
    $table->integer('post_id')->unsigned()->index();
    $table->foreign('post_id')->references('id')->on('posts')->onDelete('cascade');
    $table->integer('tag_id')->unsigned()->index();
    $table->foreign('tag_id')->references('id')->on('tags')->onDelete('cascade');
    $table->timestamps();
});
php artisan make:migration create_attachs_table --create=attachs

Schema::create('attachs', function (Blueprint $table) {
    $table->increments('id');
    $table->string('path')->nullable()->default('');
    $table->string('hash')->nullable()->default('');
    $table->string('md5')->nullable()->default('');
    $table->string('ip')->nullable()->default('0.0.0.0');
    $table->integer('user_id')->nullable()->default('0');
    $table->timestamps();
});
php artisan make:migration create_categorys_table --create=categorys

Schema::create('categorys', function (Blueprint $table) {
    $table->increments('id');
    $table->string('name')->nullabel()->default('');
    $table->string('desc')->nullabel()->default('');
    $table->string('ip')->nullabel()->default('0.0.0.0');
    $table->string('flag')->unique();
    $table->integer('pid')->nullable()->default('0');
    $table->timestamps();
});
php artisan make:migration create_options_table --create=options

Schema::create('options', function (Blueprint $table) {
    $table->increments('id');
    $table->string('title')->nullable()->default('');
    $table->string('name')->nullable()->default('');
    $table->string('value')->nullable()->default('');
    $table->string('group')->nullable()->default('');
    $table->string('remark')->nullable()->default('');
    $table->enum('status',['base','extends','hidden'])->nullable()->default('extends');
    $table->enum('type',['text','textarea'])->nullable()->default('text');
    $table->timestamps();
});

添加字段

# 创建迁移
php artisan make:migration add_count_to_tags --table=tags

    public function up()
    {
        Schema::table('tags', function (Blueprint $table) {
            $table->integer('count')->unsigned()->nullable()->default('0');
        });
    }
    
    public function down()
    {
        Schema::table('tags', function (Blueprint $table) {
            $table->dropColumn('count');
        });
    }

# 生成SQL
php artisan migrate --pretend

# 执行迁移
php artisan migrate

2. 填充数据

php artisan make:seeder CategorysTableSeeder

delete();
        DB::table('categorys')->insert([

            [
                'id'=>100,
                'name'=>'技术',
                'pid'=>0,
                'flag'=>'it',
                'desc'=>'互联网,软件开发',
                'ip'=>'127.0.0.1',
                'created_at'=>'2017-06-20 02:30:10',
                'updated_at'=>'2017-06-20 02:30:10',
            ],

            [
                'id'=>101,
                'name'=>'随笔',
                'pid'=>0,
                'flag'=>'post',
                'desc'=>'网络随笔',
                'ip'=>'127.0.0.1',
                'created_at'=>'2017-06-20 02:30:10',
                'updated_at'=>'2017-06-20 02:30:10',
            ],

            [
                'id'=>102,
                'name'=>'日记',
                'pid'=>0,
                'flag'=>'note',
                'desc'=>'每日一记',
                'ip'=>'127.0.0.1',
                'created_at'=>'2017-06-20 02:30:10',
                'updated_at'=>'2017-06-20 02:30:10',
            ],
        ]);
    }
}

php artisan db:seed --class=CategorysTableSeeder
php artisan make:seeder OptionsTableSeeder

delete();
        DB::table('options')->insert([
            [
                'id'=>100,
                'title'=>'站点名称',
                'name'=>'sitename',
                'value'=>'JunChow',
                'status'=>'base',
                'type'=>'text',
                'group'=>'',
                'remark'=>'',
                'created_at'=>'2017-06-20 02:30:10',
                'updated_at'=>'2017-06-20 02:30:10',
            ],
            [
                'id'=>101,
                'title'=>'站点关键词',
                'name'=>'keywords',
                'value'=>'JunChow',
                'status'=>'base',
                'type'=>'textarea',
                'group'=>'',
                'remark'=>'',
                'created_at'=>'2017-06-20 02:30:10',
                'updated_at'=>'2017-06-20 02:30:10',
            ],
            [
                'id'=>102,
                'title'=>'站点描述',
                'name'=>'description',
                'value'=>'JunChow',
                'status'=>'base',
                'type'=>'textarea',
                'group'=>'',
                'remark'=>'',
                'created_at'=>'2017-06-20 02:30:10',
                'updated_at'=>'2017-06-20 02:30:10',
            ],
        ]);
    }
}

php artisan db:seed --class=OptionsTableSeeder

使用工厂批量填充用户
database/factories/ModelFactory.php

$factory->define(User::class, function (Faker\Generator $faker) {
    static $password;
    return [
        'username' => $faker->username,
        'email' => $faker->unique()->safeEmail,
        'password' => $password ?: $password = bcrypt('secret'),
        'avatar' => 'avatar_'.str_random(10).'.jpg',
        'remember_token' => str_random(10),
    ];
});

database/seeds/UsersTableSeeder.php

public function run()
{
    factory('App\Models\User',10)->create()->each(function($u){
        //$u->posts()->save(factory('App\Models\Post')->make());
    });
}

php artisan db:seed --class=UsersTableSeeder

你可能感兴趣的:(Lavarel博客数据库)