【问题标题】:Alice Faker library choose random from arrayAlice Faker 库从数组中随机选择
【发布时间】:2016-12-21 12:22:52
【问题描述】:

我正在尝试使用 AliceBundle 为 Symfony 框架生成一个虚拟数据。除了我正在寻找一种方法来将数组中的数据随机分配给名为type 的属性外,一切似乎都运行良好。查看faker library 我可以看到我可以使用randomElement($array = array ('a','b','c')) 生成它

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

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

但这会产生错误

[Nelmio\Alice\Throwable\Exception\FixtureBuilder\ExpressionLanguage\LexException] 无法对值“['a'”进行 lex。

这是我完整的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*"

【问题讨论】:

  • 你试过&lt;randomElement($array = array ('a', 'b', 'c'))&gt;吗?
  • 是的,我做到了,这会引发错误找不到变量“数组”。
  • 您可能需要引用整个结果,例如type: "&lt;randomElement(['a', 'b', 'c'])&gt;"
  • @Oldskool 不,这不起作用,也会抛出 LexException

标签: symfony nelmio-alice alice-fixtures


【解决方案1】:

这对我有用:

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

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

【讨论】:

    【解决方案2】:

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

    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*"
    

    Notice type: ,现在正在从服务中生成。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-16
      • 2011-03-29
      • 2011-05-26
      • 2018-11-11
      相关资源
      最近更新 更多