承接 insolita/yii2-muffin-factory 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

insolita/yii2-muffin-factory

最新稳定版本:2.0.0

Composer 安装命令:

composer require --dev insolita/yii2-muffin-factory

包简介

Port of laravel factory

README 文档

README

A Port of laravel factory for generate fixtures on fly and database seeding

yii2-muffin-factory

Installation

Either run

composer require -dev insolita/yii2-muffin-factory:~2.0.0 

or add

"insolita/yii2-muffin-factory": "~2.0.0" 

in require-dev section of your composer.json file.

Configure

Add in bootstrap for test suite (or in every app, where it can be used)

//with default factory path by alias @tests/factories Yii::$container->setSingleton( \insolita\muffin\Factory::class, [], [\Faker\Factory::create('en_EN')] ); //with custom factory path Yii::$container->setSingleton( \insolita\muffin\Factory::class, [], [ \Faker\Factory::create('ru_RU'), //Faker language '@common/data/factories' // Custom directory for factories ] );

Create Factories

You can create all factories in single file, or in individual files in directory defined in factory configuration

example UserFactory.php

/**  * @var \insolita\muffin\Factory $factory  **/ $factory->define(User::class, function (\Faker\Generator $faker) { static $password; return [ 'name' => $faker->name, 'lastName' => $faker->name, 'email' => $faker->unique()->safeEmail, 'status'=>'default', 'passwordHash' => $password ?: $password = Yii::$app->security->generatePasswordHash('secret'), 'authKey' => Yii::$app->security->generateRandomString(), 'accessToken' => Yii::$app->security->generateRandomString(64), 'birthday' => $faker->date('Y-m-d', '-15 years'), 'registered' => $faker->dateTimeThisMonth()->format('Y-m-d H:i:s'), ]; }); $factory->state(User::class, 'developer', [ 'status' => 'developer', ]); $factory->state(User::class, 'client', [ 'status' => 'client', ]);

Use Factories

Populate new record without saving

 /**@var User $user **/ $user = factory(User::class)->make(); $user = factory(User::class)->states('client')->make(); /**@var User[] $user **/ $users = factory(User::class, 5)->make(); $users = factory(User::class, 5)->states(['client', 'developer'])->make();

Populate and persist records

 /**@var User $user * */ $user = factory(User::class)->create(); /**@var User[] $user **/ $users = factory(User::class, 10)->states(['client'])->create(['registered'=>Carbon::now()]);

See more examples in FactoryTest

Use with ActiveFixtures

Create ActiveFixture extended classed in configured directory as usual

class UserFixture extends ActiveFixture { public $modelClass = User::class; protected function getData() { return array_merge( factory(User::class, 1)->states('developer')->raw(), factory(User::class, 10)->states('client')->raw() ); } }

Fixtures with relation dependency

class PostFixture extends ActiveFixture { public $modelClass = Post::class; public $depends = [UserFixture::class]; public function load() { $this->data = []; $users = User::find()->select(['id'])->column(); foreach ($users as $userId) { $posts = factory(Post::class, 5)->create(['createdBy' => $userId]); foreach ($posts as $post) { $this->data[$post->id] = $post->getAttributes(); } } return $this->data; } } class SomeFixture extends ActiveFixture { public $modelClass = Some::class; public $depends = [UserFixture::class]; protected function getData() { $users = User::find()->select(['id'])->where(['status'=>'client'])->column(); $developer = User::find()->where(['status'=>'developer'])->limit(1)->one(); $data = array_merge( factory(Some::class, 5)->raw(['user_id'=>ArrayHelper::random($users)]), factory(Some::class, 20)->states('one')->raw(['user_id'=>function() use(&$users){ return ArrayHelper::random($users);}]), factory(Some::class, 11)->states('two')->raw(['user_id'=>$developer->id]) ); return $data; } }

统计信息

  • 总下载量: 47.36k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 9
  • 点击次数: 1
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 9
  • Watchers: 3
  • Forks: 3
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-01-04

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固