eddmash / powerormfaker

powerormfake在使用PowerOrm时生成模拟数据。Faker库的扩展

v1.1.0 2017-07-04 06:54 UTC

This package is auto-updated.

Last update: 2024-09-09 02:52:10 UTC


README

PowerOrmFake是Faker库的一个扩展,用于为PowerOrm库生成模拟数据。它依赖于Faker库

安装

composer require eddmash/powerormfaker

填充模型

PowerOrmFaker通过PowerOrm库提供的模型类简化了数据库的填充。

要填充模型,创建一个新的填充器类(使用生成器实例作为参数),然后列出所有必须生成的模型类及其数量。

要启动实际的数据填充,调用execute()方法。

以下是一个示例,展示如何填充5个Author和10个Book对象

<?php
$generator = \Faker\Factory::create();
$populator = new Eddmash\PowerOrmFaker\Populator($generator);
$populator->addModel(new Author, 5);
$populator->addModel(new Book, 10);
$insertedPKs = $populator->execute();

填充器使用名称和列类型猜测器将相关数据填充到每个列中。例如,Faker使用firstName格式化程序填充名为first_name的列,并使用dateTime格式化程序填充具有TIMESTAMP类型的列。因此生成的模型是一致的。

如果Faker错误解释了列名,您仍然可以使用addModel()的第三个参数指定用于填充特定列的自定义闭包。

<?php
$populator->addModel('Book', 5, array(
  'ISBN' => function() use ($generator) { return $generator->ean13(); }
));

在这个例子中,Faker将为所有列猜测格式化程序,除了ISBN列,将使用给定的匿名函数。

提示:要忽略某些列,请在addModel()的第三个参数中指定列名为null。这通常对于由行为添加的列是必要的

<?php
$populator->addModel('Book', 5, array(
  'CreatedAt' => null,
  'UpdatedAt' => null,
));

当然,Faker不会填充自增主键。此外,Eddmash\PowerOrmFaker\Populator::execute()返回插入的PK列表,按类索引

<?php
print_r($insertedPKs);
// array(
//   'Author' => (34, 35, 36, 37, 38),
//   'Book'   => (456, 457, 458, 459, 470, 471, 472, 473, 474, 475)
// )

在上一个例子中,BookAuthor模型共享关系。由于Author模型首先填充,Faker足够智能,可以将填充的Book模型与一个填充的Author模型相关联。

最后,如果您想在插入实体之前执行任意函数,请使用addModel()方法的第四个参数

<?php
$populator->addModel('Book', 5, array(), array(
  function($book) { $book->publish(); },
));