[ Laravel 5.2 ドキュメント ] データベース -- データの入力

WBOY
リリース: 2016-06-23 13:19:33
オリジナル
1028 人が閲覧しました

1. はじめに

Laravel には、fill クラスとテストデータを使用してデータベースにデータを入力する簡単な方法が含まれています。すべてのフィラー クラスは、database/seeds ディレクトリにあります。フィラー クラスのクラス名は完全にカスタマイズできますが、UserTableSeeder などの読みやすさなど、特定のルールに従うことが最善です。 Laravel をインストールすると、デフォルトで DatabaseSeeder クラスが提供されます。このクラスから、call メソッドを使用して他の約定クラスを実行し、約定順序を制御できるようになります。

2. フィラーを作成する

フィラーを生成するには、アーティザン コマンド make:seeder を使用できます。フレームワークで生成されたすべての shim は、database/seeders ディレクトリにあります:

php artisan make:seeder UserTableSeeder
ログイン後にコピー

shim クラスには、デフォルトでメソッドが 1 つだけ含まれています: run。このメソッドは、Artisan コマンド db:seed の実行時に呼び出されます。 run メソッドでは、必要なデータをデータベースに挿入できます。クエリ ビルダーを使用して手動でデータを挿入することも、Eloquent モデル ファクトリを使用することもできます。

たとえば、Laravel インストールに付属する DatabaseSeeder クラスを変更して、run メソッドにデータベース挿入ステートメントを追加しましょう:

<?phpuse DB;use Illuminate\Database\Seeder;use Illuminate\Database\Eloquent\Model;class DatabaseSeeder extends Seeder{    /**     * 运行数据库填充     *     * @return void     */    public function run()    {        DB::table('users')->insert([            'name' => str_random(10),            'email' => str_random(10).'@gmail.com',            'password' => bcrypt('secret'),        ]);    }}
ログイン後にコピー

モデル ファクトリを使用する

もちろん、各モデルに設定される属性を手動で指定するのは面倒ですし、面倒ですが、代わりに、モデル ファクトリを使用して、大量のデータベース レコードを簡単に生成できます。まず、モデル ファクトリのドキュメントを参照して、ファクトリを定義する方法を確認してください。ファクトリを定義した後、ヘルパー関数ファクトリを使用してデータベースにレコードを挿入できます。

たとえば、50 人のユーザーを作成し、各ユーザーに関係を追加してみましょう:

/** * 运行数据库填充 * * @return void */public function run(){    factory('App\User', 50)->create()->each(function($u) {        $u->posts()->save(factory('App\Post')->make());    });}
ログイン後にコピー

追加のポピュレータを呼び出す

DatabaseSeeder クラスでは、call メソッドを使用して追加のポピュレータ クラスを実行できます。call メソッドを使用すると、データベースの母集団を次のように分割できます。単一のポピュレータ クラスが無限に大きくならないように、複数のファイルを作成します。実行したいポピュレータ クラス名を渡すだけです:

/*** 运行数据库填充** @return void*/public function run(){    Model::unguard();    $this->call(UserTableSeeder::class);    $this->call(PostsTableSeeder::class);    $this->call(CommentsTableSeeder::class);    Model::reguard();}
ログイン後にコピー

3. ポピュレータを実行します

フィラー クラスを作成した後、Artisan コマンド db:seed を使用できます。データベースを埋めるために。デフォルトでは、db:seed コマンドは、他のフィラー クラスの実行に使用できる DatabaseSeeder クラスを実行しますが、 --class オプションを使用して、実行するスタンドアロン フィラー クラスを指定することもできます。また、 merge:refresh コマンドを使用してデータベースにデータを追加します。これにより、移行をロールバックして再実行することもできます。これは、データベースを完全に再構築する必要がある場合に役立ちます。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート