Lavarelブログデータベース

12051 ワード

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