Alice Faker库从数组中随机选择

时间:2016-12-21 12:22:52

标签: symfony nelmio-alice alice-fixtures

我正在尝试使用AliceBundle为Symfony Framework生成虚拟数据。一切似乎工作正常,除了我正在寻找一种方法,将数据从数组随机分配给名为type的属性。查看faker library我可以看到我可以使用randomElement($array = array ('a','b','c'))

生成该内容

我正在尝试将其转换为YML,我认为这相当于

<randomElement(['a','b','c'])>

但这会产生错误

  

[Nelmio \爱丽丝\ Throwable的\异常\ FixtureBuilder \表达式语言\ LexException]   不能使用“['a'”这个值。

这是我完整的yml

AppBundle\Entity\Job:
    job{1..5}:
        title: <jobTitle()>
        description: <paragraph(3)>
        length: "3_months_full_time"
        type: <randomElement(['a','b','c'])>
        bonus: <paragraph(3)>
        expired_at: "2016-12-21"
        job_user: "@emp*"

2 个答案:

答案 0 :(得分:1)

我最终创建了一个自定义提供程序

namespace AppBundle\DataFixtures\Faker\Provider;

    class JobTypeProvider
    {
        public static function jobType()
        {
            $types = array("paid", "unpaid", "contract");
            $typeIndex = array_rand($types);
            return  $types[$typeIndex];
        }
    }

将其添加到services.yml

app.data_fixtures_faker_provider.job_type_provider:
    class: AppBundle\DataFixtures\Faker\Provider\JobTypeProvider
    tags: [ { name: nelmio_alice.faker.provider } ]

然后在yml文件中使用它

AppBundle\Entity\Job:
    job{1..50}:
        title: <jobTitle()>
        description: <paragraph(3)>
        length: <jobLength()>
        job_industry: "@title*"
        type: <jobType()>
        bonus: <paragraph(3)>
        expired_at: "2016-12-21"
        job_user: "@emp*"
  

通知类型:,这是从服务现在生成的。

答案 1 :(得分:0)

这对我有用:

parameters:
    profileArray: ['PUBLIC', 'PRIVATE', 'AUTHENTICATED']

JobPlatform\AppBundle\Entity\Profile:
    profiles_{1..100}:
        user: '@user_<current()>'
        visibility: <randomElement($profileArray)>