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