• laravel模型建立和数据迁移和数据填充(数据填充没有成功)未完


    开始创建我们的第一个 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

  • 相关阅读:
    API短信平台的部分例子代码(转)
    将你的blog变成英文版
    如何构建安全的.net web应用系统
    利用ASP.NET AJAX实现表格更新程序
    asp.net Futures 之 Dynamic Data Control 的 学习总结
    Java修饰符public,private,protected及默认的区别
    Android之Handler用法总结
    Activity与Service通信(不同进程之间)
    Java关键字this、super使用总结
    Java之模板方法模式(Template Method)
  • 原文地址:https://www.cnblogs.com/fps2tao/p/8724905.html
Copyright © 2020-2023  润新知