Библиотека Алисы Фейкер выбирает случайный из массива
Я пытаюсь сгенерировать фиктивные данные с помощью AliceBundle для Symfony Framework. Кажется, все работает нормально, за исключением того, что я ищу способ случайного назначения данных из массива свойству с именем type
, Глядя на фейкерную библиотеку, я вижу, что могу создать это, используя randomElement($array = array ('a','b','c'))
Я пытаюсь преобразовать это в YML
и я думаю, что это эквивалентно
<randomElement(['a','b','c'])>
Но это выдает ошибку
[Nelmio\Alice\Throwable\Exception\FixtureBuilder\ExpressionLanguage\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 ответа
Решение
В итоге я создал собственного провайдера
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*"
Тип уведомления:, это генерируется из сервиса сейчас.
Это работает для меня:
parameters:
profileArray: ['PUBLIC', 'PRIVATE', 'AUTHENTICATED']
JobPlatform\AppBundle\Entity\Profile:
profiles_{1..100}:
user: '@user_<current()>'
visibility: <randomElement($profileArray)>