sizuhiko / cake_fabricate
CakeFabricate for CakePHP 插件
Requires
- php: >=5.6
- cakephp/cakephp: ~3.6
- sizuhiko/fabricate: ~2.0
Requires (Dev)
- phpunit/phpunit: ^4.8.35 || ^5.7 || ^6.0
This package is auto-updated.
Last update: 2024-08-29 04:09:02 UTC
README
CakeFabricate for CakePHP 插件
CakeFabricate 是 Fabricate 的适配器,并将 Fabricate(版本 2)集成到 CakePHP3 中。
如果您想使用 CakePHP4,请查看 cakephp4 分支。
安装
您可以使用 composer 将此插件安装到您的 CakePHP 应用程序中。
安装 composer 包的推荐方法是
composer require sizuhiko/cake_fabricate
用法
首先,Fabricate 需要配置以使用。在 app/tests/bootstrap.php 中,添加以下内容
use Fabricate\Fabricate; use CakeFabricate\Adaptor\CakeFabricateAdaptor; Fabricate::config(function($config) { $config->adaptor = new CakeFabricateAdaptor(); });
API
CakeFabricateAdaptor 有选项。这些选项通过构造函数设置。
配置
Fabricate::config(function($config) {
$config->adaptor = new CakeFabricateAdaptor([
CakeFabricateAdaptor::OPTION_FILTER_KEY => true
CakeFabricateAdaptor::OPTION_VALIDATE => true
]);
});
支持选项
CakeFabricateAdaptor::OPTION_FILTER_KEY
OPTION_FILTER_KEY 如果为 true,则不会为自增 ID 生成任何主键。
默认:false
OPTION_VALIDATE
表示在创建新实体时是否进行验证。见:CakePHP 的 Entity::newEntity()
默认:false
生成模型属性作为数组(不保存)
Fabricate::attributes_for(:name, :number_of_generation, :array_or_callback)
仅生成属性。
- name: 表类别名。要获取 CakePHP3 的表实例,请调用
TableRegistry::get(:name);
。 - number_of_generation: 生成的记录数
- array_or_callback: 它可以覆盖每个生成的属性
示例应用
实体
- Model\Entity\Post
- Model\Entity\User
表
- Model\Entity\PostsTable
- Model\Entity\UsersTable
关联
PostsTable 有多个 UsersTable 作为 Author
示例
$results = Fabricate::attributes_for('Posts', 10, function($data){ return ["created" => "2013-10-09 12:40:28", "updated" => "2013-10-09 12:40:28"]; }); // $results is array followings : array ( 0 => array ( 'title' => 'Lorem ipsum dolor sit amet', 'body' => 'Lorem ipsum dolor sit amet, aliquet feugiat. Convallis morbi fringilla gravida, phasellus feugiat dapibus velit nunc, pulvinar eget sollicitudin venenatis cum nullam, vivamus ut a sed, mollitia lectus. Nulla vestibulum massa neque ut et, id hendrerit sit, feugiat in taciti enim proin nibh, tempor dignissim, rhoncus duis vestibulum nunc mattis convallis.', 'created' => '2013-10-09 12:40:28', 'updated' => '2013-10-09 12:40:28', ), 1 => array ( ....
生成实体实例(未保存)
Fabricate::build(:name, :array_or_callback)
生成实体实例(使用 Table::newInstance)。
- name: 表类别名。要获取 CakePHP3 的表实例,请调用
TableRegistry::get(:name);
。 - array_or_callback: 它可以覆盖每个生成的属性
示例
$result = Fabricate::build('Posts', function($data){ return ["created" => "2013-10-09 12:40:28", "updated" => "2013-10-09 12:40:28"]; }); // $result a Model\Entity\Post object. ......
生成记录到数据库
Fabricate::create(:name, :number_of_generation, :array_or_callback)
生成并保存记录到数据库。
- name: 表类别名。要获取 CakePHP3 的表实例,请调用
TableRegistry::get(:name);
。 - number_of_generation: 生成的记录数
- array_or_callback: 它可以覆盖每个生成的属性
示例
Fabricate::create('Posts', 10, function($data){ return ["created" => "2013-10-09 12:40:28", "updated" => "2013-10-09 12:40:28"]; });
关联
在 Fabricate::create() 中可以设置关联(hasOne/hasMany/belongsTo)。您还可以指定 FabricateContext::association()。它将生成属性,并将其(合并)设置在当前数组中。
用法
Fabricate::create('Users', function($data, $world) { return [ 'user' => 'taro', 'posts' => $world->association('Posts', 3, ['author_id'=>false]), ]; }); // can use defined onbject. Fabricate::define(['PublishedPost', 'class'=>'Posts'], ['published'=>'1']); Fabricate::create('Users', function($data, $world) { return [ 'user' => 'taro', 'posts' => $world->association(['PublishedPost', 'association'=>'Posts'], 3, ['author_id'=>false]), ]; }); // can use association alias (Post belongs to Author of User class) Fabricate::define(['PublishedPost', 'class'=>'Posts'], ['published'=>'1']); Fabricate::create('PublishedPost', 3, function($data, $world) { return [ 'author' => $world->association(['Users', 'association'=>'Author'], ['id'=>1,'user'=>'taro']), ]; });
更多功能
请参阅 Fabricate 的文档。
为这个库做出贡献
请随时通过新的问题、请求、单元测试和代码修复或新功能为库做出贡献。如果您想贡献一些代码,请从 develop 分支创建功能分支,并发送您的 pull request。