开始创建我们的第一个 Article
模型及其对应迁移文件了,我们在项目根目录运行如下 Artisan 命令一步到位:
php artisan make:model Article -m
-m
是 --migration
的缩写,告知 Artisan 在创建模型同时创建与之对应的迁移文件(我使用的是 Laradock 作为开发环境):
当然,还需要编辑默认生成的迁移文件:
use IlluminateSupportFacadesSchema; use IlluminateDatabaseSchemaBlueprint; use IlluminateDatabaseMigrationsMigration; class CreateArticlesTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('articles', function (Blueprint $table) { $table->increments('id'); $table->string('title'); $table->text('body'); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('articles'); } }
然后我们运行如下命令创建对应数据表:
php artisan migrate
现在我们回到 Article
模型类添加如下属性到 $fillable
字段以便可以在 Article::create
和 Article::update
方法中可以使用它们:
class Article extends Model { protected $fillable = ['title', 'body']; }
数据库填充
Laravel 通过 Faker 库可以快速为我们生成格式正确的测试数据:
php artisan make:seeder ArticlesTableSeeder
生成的填充器类位于 /database/seeds
目录下,我们编辑填充器类如下:
use IlluminateDatabaseSeeder; use AppArticle; class ArticlesTableSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { // Let's truncate our existing records to start from scratch. Article::truncate(); $faker = FakerFactory::create(); // And now, let's create a few articles in our database: for ($i = 0; $i < 50; $i++) { Article::create([ 'title' => $faker->sentence, 'body' => $faker->paragraph, ]); } } }
然后运行填充命令:
php artisan db:seed --class=ArticlesTableSeeder
重复上述过程创建一个用户填充器:
use IlluminateDatabaseSeeder; use AppUser; class UsersTableSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { // Let's clear the users table first User::truncate(); $faker = FakerFactory::create(); // Let's make sure everyone has the same password and // let's hash it before the loop, or else our seeder // will be too slow. $password = Hash::make('toptal'); User::create([ 'name' => 'Administrator', 'email' => 'admin@test.com', 'password' => $password, ]); // And now let's generate a few dozen users for our app: for ($i = 0; $i < 10; $i++) { User::create([ 'name' => $faker->name, 'email' => $faker->email, 'password' => $password, ]); } } }
编辑 DatabaseSeeder
类:
use IlluminateDatabaseSeeder; class DatabaseSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { $this->call(UsersTableSeeder::class); $this->call(ArticlesTableSeeder::class); } }
后运行 php artisan db:seed
就可以执行所有填充器填充数据。
数据填充怎么没有成功?
参考 (转):http://laravelacademy.org/post/9153.html