Faker losowanie unikalnych wartości dla 2 kolumn

2018-12-11 13:46
0

Próbuję za pomocą faker wygenerować user_id oraz company_id z podanych przedziałów, ale pojawia się błąd:

 OverflowException  : Maximum retries of 10000 reached without finding a unique value
<?php

use Faker\Generator as Faker;

$factory->define(App\Car::class, function (Faker $faker) {
    return [
        'user_id' => $faker->unique()->numberBetween(1, 5),
        'company_id' => $faker->unique()->numberBetween(1, 3)
    ];
});

Pary user_id, company_id muszą być unikalne tzn. nie może być 2 takich samych rekordów np.:

user_id    company_id
1             1                              // ok
1             2                              // ok
3             1                              // ok

Pozostało 580 znaków

2018-12-11 13:54
1

Może w taki deseń?

$ids = $faker->unique()->regexify("/^\d{2}-\d{2}$/");
$ids = explode('-', $ids);

$userId = $ids[0];
$companyId = $ids[1];

edytowany 1x, ostatnio: Patryk27, 2018-12-11 13:55
A jak ustalić zakres, że wylosowana liczba będzie z przedziału np. od 1 do 5? Patrzę po sieci i widzę, że z losowaniem unikalnych wartości dla pivot tables są problemy. - linuxf 2018-12-11 14:31
if ($ids[0] > 5) { spróbuj_ponownie() }; :-P - Patryk27 2018-12-11 14:35
Ewentualnie (1|2|3|4|5), jeśli zadziała. - Patryk27 2018-12-11 14:37

Pozostało 580 znaków

Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0