在Nelmio Alice中使用没有标准教条装置的自定义faker数据提供者

时间:2015-05-08 03:38:26

标签: php symfony doctrine-orm nelmio-alice alice-fixtures

我正在通过NelmioAlice在Symfony2项目中设置FakerAlixeFixturesBundle。我需要一个组合夹具,例如:

representative{1..100}:
    veeva_rep_id (unique): qlv_005800000067SwzAAE

这是一个qlv_前缀,后跟一个随机的18个字符的字符串。我发现完成这项任务的最佳方法(如果有人知道另一个或更好的方法来完成这个让我知道)是使用一个自定义的faker并且我写了这段代码:

<?php
/**
 * FakerProvider: VeevaProvider.
 */

namespace PDI\PDOneBundle\DataFixtures;

use ReverseRegex\Lexer;
use ReverseRegex\Random\SimpleRandom;
use ReverseRegex\Parser;
use ReverseRegex\Generator\Scope;

class VeevaProvider extends \Faker\Provider\Base
{
    public function veevaRepId()
    {
        $lexer = new  Lexer('[a-zA-Z0-9]{18}');
        $gen = new SimpleRandom(10007);
        $result = '';

        $parser = new Parser($lexer, new Scope(), new Scope());
        $parser->parse()->getResult()->generate($result, $gen);

        return 'qlv_' . $result;
    }
}

在Faker文档中解释here。现在,NelmioAlice的here作者解释了如何添加自定义Faker数据提供程序,但它使用的是Doctrine Fixtures,我不这样做,有了这个,我如何加载和使用提供程序I在夹具上写道?对此有何建议?

1 个答案:

答案 0 :(得分:1)

它应该像在构造它时将提供者的实例传递到Loader一样简单:

$loader = new Loader('en_US', [new VeeveProvider]);