Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Yii2 Faker Laravel Package

yiisoft/yii2-faker

Yii2 integration for Faker, providing fixtures and fake data generators to quickly seed databases and build test data in Yii2 apps. Useful for unit/functional tests and rapid prototyping with consistent, customizable fake datasets.

View on GitHub
Deep Wiki
Context7

基本的な使用方法

Faker\Factory::create() を使って、faker ジェネレータを作成して初期化します。この faker ジェネレータのプロパティの中から、あなたが必要とするデータのタイプを指定する名前のものを選んでアクセスすると、疑似データを生成することが出来ます。

// factory を使って Faker\Generator のインスタンスを作成する
$faker = Faker\Factory::create();

// プロパティにアクセスして、データを生成する
echo $faker->name;
  // 'Lucy Cechtelar';
echo $faker->address;
  // "426 Jordy Lodge
  // Cartwrightshire, SC 88120-6700"
echo $faker->text;
  // Sint velit eveniet. Rerum atque repellat voluptatem quia rerum. Numquam excepturi
  // beatae sint laudantium consequatur. Magni occaecati itaque sint et sit tempore. Nesciunt
  // amet quidem. Iusto deleniti cum autem ad quia aperiam.
  // A consectetur quos aliquam. In iste aliquid et aut similique suscipit. Consequatur qui
  // quaerat iste minus hic expedita. Consequuntur error magni et laboriosam. Aut aspernatur
  // voluptatem sit aliquam. Dolores voluptatum est.
  // Aut molestias et maxime. Fugit autem facilis quos vero. Eius quibusdam possimus est.
  // Ea quaerat et quisquam. Deleniti sunt quam. Adipisci consequatur id in occaecati.
  // Et sint et. Ut ducimus quod nemo ab voluptatum.

テストでの使用方法

tests というエイリアスをコンソールの構成情報で定義してください。 例えば、basic プロジェクト・テンプレートであれば、Yii::setAlias('tests', dirname(__DIR__) . '/tests/codeception');console.php 構成情報ファイルに追加します。 このコマンドを使い始めるためには、Faker ライブラリに慣れ親しんで (ガイドを読んでください)、 指定された形式に従ってフィクスチャ・テンプレート・ファイルを生成しなければなりません。

// テンプレート・パス (デフォルトでは、[@tests](https://github.com/tests)/unit/templates/fixtures の下) の users.php ファイル
/**
 * [@var](https://github.com/var) $faker \Faker\Generator
 * [@var](https://github.com/var) $index integer
 */
return [
    'name' => $faker->firstName,
    'phone' => $faker->phoneNumber,
    'city' => $faker->city,
    'password' => Yii::$app->getSecurity()->generatePasswordHash('password_' . $index),
    'auth_key' => Yii::$app->getSecurity()->generateRandomString(),
    'intro' => $faker->sentence(7, true),  // 単語 7 個の文を生成
];

御覧のように、テンプレート・ファイルは単純な通常の PHP スクリプトです。 スクリプトは「キー・値」ペアの配列を返さなければなりません。ここで、キーはテーブルのカラム名を表し、値は対応する値です。 fixture/generate コマンドを実行すると、生成されるデータ行のすべてについてこのスクリプトが実行されます。 スクリプトの中では、次の二つの事前定義された変数を使用することが出来ます。

  • $faker: Faker ジェネレータのインスタンス。
  • $index: 現在のフィクスチャのインデックス。例えば、user テーブルのために三つのフィクスチャを生成する必要がある場合、インデックスは 0..2 です。

このようなテンプレート・ファイルを使って、次のようなコマンドでフィクスチャを生成することが出来ます。

# user のフィクスチャ・テンプレートからフィクスチャを生成する
php yii fixture/generate users

# いくつかのフィクスチャ・データ・ファイルを生成する
php yii fixture/generate users profiles teams

上記のコードで users がテンプレートの名前です。 このコマンドを実行した後、テンプレートと同じ名前のファイルがフィクスチャ・パス ([@tests](https://github.com/tests)/unit/fixtures フォルダ) に生成されます。

php yii fixture/generate-all

上記のコマンドは、テンプレート・パスに保存されている全てのテンプレートに対してフィクスチャを生成して、 テンプレートの名前と同じファイル名でフィクスチャ・パスに保存します。 --count オプションによって、テンプレートごとに生成したいフィクスチャの数を指定することが出来ます。 下記のコードでは、全てのテンプレートに対してフィクスチャを生成し、各フィクスチャ・ファイルについては 3 行 (3 個) のフィクスチャを得ることになります。

php yii fixture/generate-all --count=3

さらに、このコマンドには、さまざまなオプションがあります。

# ロシア語でフィクスチャを生成する
php yii fixture/generate users --count=5 --language="ru_RU"

# 他のパスからテンプレートを読む
php yii fixture/generate-all --templatePath='[@app](https://github.com/app)/path/to/my/custom/templates'

# 他のディレクトリにフィクスチャを生成する
php yii fixture/generate-all --fixtureDataPath='[@tests](https://github.com/tests)/acceptance/fixtures/data'

次のコマンドを実行すると、利用可能な全てのテンプレートを見ることが出来ます。

# デフォルトのテンプレート・パス (すなわち、'[@tests](https://github.com/tests)/unit/templates/fixtures') の下にある全てのテンプレートをリストする
php yii fixture/templates

# 指定したテンプレート・パスの下にある全てのテンプレートをリストする
php yii fixture/templates --templatePath='[@app](https://github.com/app)/path/to/my/custom/templates'

カスタム・テーブル・フィールドのためにあなた自身のデータ・プロバイダを作成することも出来ます。 詳細な情報は Faker ライブラリのガイドを参照してください。例えば、次のようにして、カスタム・プロバイダを作成します。

class Book extends \Faker\Provider\Base
{
    public function title($nbWords = 5)
    {
        $sentence = $this->generator->sentence($nbWords);
        return mb_substr($sentence, 0, mb_strlen($sentence) - 1);
    }
 }

そして、これを console.php 構成情報ファイルで現在のコマンドの $provider プロパティに追加することによって、使用することが出来るようになります。

return [
    'controllerMap' => [
        'fixture' => [
            'class' => 'yii\faker\FixtureController',
            'providers' => [
                'app\tests\unit\faker\providers\Book',
            ],
        ],
        // ...
    ],
    // ...
];

Yii 2 アドバンスト・テンプレート

Yii 2 アドバンスト・テンプレートで faker を実行したい場合は、templatePath および fixtureDataPath を設定する必要があります。例えば、共通のフィクスチャを設定したい場合は、console/config/main.php で以下のように構成します。

return [
    'controllerMap' => [
        'fixture' => [
            'class' => 'yii\faker\FixtureController',
            'templatePath' => '[@common](https://github.com/common)/tests/templates/fixtures',
            'fixtureDataPath' => '[@common](https://github.com/common)/tests/fixtures/data',
        ],
        // ...
    ],
    // ...
];
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
facebook/capi-param-builder-php
babelqueue/symfony
hamzi/corewatch
minionfactory/raw-hydrator
hexters/coinpayment
rjcodes/rjcms
act-training/laravel-permissions-manager
alimarchal/laravel-chart-of-accounts
babenkoivan/elastic-scout-driver
mkwebdesign/filament-watchdog-v5
renatomarinho/laravel-page-speed
zedmagdy/filament-business-hours
renatovdemoura/blade-elements-ui
devgeek/beacon-admin
benjamin-rqt/data-watcher-bundle
atriumphp/atrium
sandermuller/package-boost-laravel
sandermuller/boost-skills
redaxo/core
yusufgenc/filament-api-forge