Как в Laravel Faker добавлять не более 4 одинаковых значений в определенную таблицу?

Доброго времени суток!

Через фейкер гинерирую пользователей
$factory->define(Users::class, function (Faker $faker) {

    $teamIds = Team::pluck('id')->toArray();
    
    return [
        'id_team' => $faker->randomElement($teamIds),
        'name' => $faker->name,
        'photo' => $faker->image('/tmp', 400, 400, 'cats'),
        'role' => rand(0,1)
    ];
});


Как сделать, чтобы в каждую команду попало по 5 человек? То есть нужно сгенерировать 5 пользователей для каждой команды.
Так же для `role` нужно чтобы всего у 5 пользователей была роль '1'.

Можно ли такое реализовать или придется через цикл формировать сразу значения и потом записывать. Спасибо.
  • Вопрос задан
  • 146 просмотров
Решения вопроса 1
database/seeds/TeamSeeder.php
factory(Team::class, 3)->create()->each(function($team) {
    $team->users()->saveMany(factory(Users::class, 5)->make());
});
// Roles
$admin_ids = collect(range(1, Users::count()))->random(5)->toArray();
Users::whereIn('id', $admin_ids)->update(['role' => 1]);

Будет работать, если у вас для модели Team будет настроена связь hasMany с моделью Users.
ЗЫ: Рекомендую применять стандарты Laravel:
Users -> User
id_team -> team_id
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Kostik_1993
Fullstack Web Developer | PHP | Laravel | Vue.js
Нужно генерировать сначала команды, а уже в команды добавлять участников

Вы делаете наоборот
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы