sizuhiko/cake_fabricate

此包最新版本(v0.3.0)没有提供许可证信息。

CakeFabricate for CakePHP 插件

安装次数: 148,370

依赖: 0

推荐者: 1

安全性: 0

星标: 19

关注者: 3

分支: 8

开放问题: 0

类型:cakephp-plugin

v0.3.0 2020-03-02 02:11 UTC

This package is auto-updated.

Last update: 2024-08-29 04:09:02 UTC


README

Build Status Coverage Status Total Downloads Latest Stable Version

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。