php - Laravel 中的数据库播种是什么?

标签 php laravel laravel-seeding

我使用 Laravel 框架,我最近得知有一个名为 database seeding 的东西可以为我们的测试生成一个假数据集。我的理解正确吗?

嗯,这很奇怪。怎么运行的?它如何知道数据库的 X 列中我需要哪种类型的数据?它是如何产生的?

此外,我不能制作我的真实数据集的种子(类似于导出)吗?你知道,我不太懂英语,这就是为什么我无法理解数据库领域的种子概念。

最佳答案

是的,Laravel 附带了一个非常棒且流行的包,名为 - Faker .您可以使用 Faker 编写此示例并生成 10 个这样的用户(在 DatabaseSeeder.php 中):

use DB;
use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;

use Faker\Factory as Faker;

class DatabaseSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        $faker = Faker::create();
        foreach (range(1,10) as $index) {
            DB::table('users')->insert([
                'name' => $faker->name,
                'email' => $faker->email,
                'password' => bcrypt('secret'),
            ]);
        }
    }
}

That’s it – $faker->name will generate a random person name, and $faker->email – a random email. After running command php artisan db:seed your database get populated with some random entries.

您可以在 require-dev 下的 composer.json 文件中找到此包:

"require-dev": {
    "fzaninotto/faker": "^1.6", // <------- here
    "mockery/mockery": "0.9.*",
    "phpunit/phpunit": "~5.0",
    "symfony/css-selector": "3.1.*",
    "symfony/dom-crawler": "3.1.*",
    "laracasts/testdummy": "~2.0"
},

Faker 可以生成大量数据,其中一些数据如下:

$faker->randomDigit;
$faker->numberBetween(1,100);
$faker->word;
$faker->paragraph;
$faker->lastName;
$faker->city;
$faker->year;
$faker->domainName;
$faker->creditCardNumber;

希望这对您有所帮助!

关于php - Laravel 中的数据库播种是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41206038/

相关文章:

php - 当用户点击提交按钮时,index.php 不会捕获该操作并更新数据库

php - 如何从另一个表中获取 VALUES 到 PHP/MySQL 中的另一个表中

php - 使 PHP 回显 <a href= link>

php - 在此服务器上找不到请求的资源。 Cloud9 IDE 上的 Laravel

php - 如何为 laravel 测试播种数据库迁移?

php - 运行 Laravel 照亮 Laravel 之外的数据库事务

mysql - 制表符表不呈现某些列值。想知道为什么?

php - 命令 "tinker"未定义

mysql - Laravel : How do I insert the first user in the database

php - Laravel-5.5 在 Null 错误上调用成员函数产品(多对多关系)