eddmash / powerormfaker
powerormfake在使用PowerOrm时生成模拟数据。Faker库的扩展
Requires
- php: >=5.4.0
- eddmash/powerorm: ^1.1.0
- fzaninotto/faker: *
Suggests
- eddmash/powerorm: A very simple but effective php orm
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) // )
在上一个例子中,Book
和Author
模型共享关系。由于Author
模型首先填充,Faker足够智能,可以将填充的Book
模型与一个填充的Author
模型相关联。
最后,如果您想在插入实体之前执行任意函数,请使用addModel()
方法的第四个参数
<?php $populator->addModel('Book', 5, array(), array( function($book) { $book->publish(); }, ));