web-dev-qa-db-ja.com

Laravelのデータベースシーディングとは何ですか?

私はLaravelフレームワークを使用しており、database seedingこれは、テスト用の偽のデータセットを生成します。私の理解は正しいですか?

まあそれはかなり奇妙です。使い方?データベースのX列に必要なデータの種類をどのようにして知るのですか?そして、それはどのようにそれを生成しますか?

また、実際のデータセットのシードを作成することはできません(エクスポートのようなもの)?私は英語をよく知らないので、データベースフィールドのseedの概念を理解できません。

7
stack

通常、アプリの開発とテストのために(関係などの)偽のデータを作成するために model Factories および faker を使用しています。

実際のデータをシードする場合は、コマンドを使用してダンプをインポートします。または、データが国のテーブルのようなものである場合は、fakerまたはモデルファクトリを使用せずに実際のデータを挿入するシーダーを作成します。

また、 some package を使用して、実際のデータからシーダーを作成できます。

シードに関するドキュメント を読むことをお勧めします。

5
Alexey Mezenin

はい、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'),
            ]);
        }
    }
}

それだけです– $faker->nameはランダムな人物名を生成し、$faker->email –ランダムなメールを生成します。コマンドphp artisan db:seedを実行すると、データベースにランダムなエントリが追加されます。

このパッケージは、composer.jsonの下のrequire-devファイル内にあります。

"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;

お役に立てれば!

9
Saumya Rastogi