Laravel Исключение «неопределенное смещение: 4» при работе с фейкером, как убрать смещение? - PullRequest
0 голосов
/ 21 января 2020
    public function run(){
    $types = ['Travelling','Camping','Restaurants','Food'];

    for ($i = 0; $i < 50; $i++){

        $faker = Factory::create();
        $internet = new Internet($faker);
        $date = new DateTime($faker);
        $lorem = new Lorem($faker);

        $id = $internet->numberBetween($min = 2000,$max = 2000000);
        $price = $internet->randomFloat($nbMaxDecimals = 2, $min = 0, $max = 100);
        $expiration = $date->dateTimeBetween($startDate = 'now', $endDate = '+2 years');
        $title = $lorem->sentence($nbWords = 3, $variableNbWords = true);

        DB::table('coupon')->insert([
            'id'=>$id,
            'title'=>$title,
            'price'=>$price,
            "type"=>$types[$i],
            'expiration'=>$expiration
        ]);
    }
}

Таблица обновлена ​​на 4 строки. Нужна ваша помощь, пожалуйста, не можете понять, как преодолеть предел смещения? Какие-нибудь дополнительные конфигурации?

Подсветка \ Foundation \ Bootstrap \ HandleExceptions :: handleError ("Неопределенное смещение: 4", "C: \ xampp \ htdocs \ couponsystem \ database \ seed \ CouponSeeder. php ")

Ответы [ 2 ]

2 голосов
/ 21 января 2020

Массив $types содержит только 4 элемента, индекс отсутствует 4.

Используйте по модулю 4 , чтобы число никогда не превышало 3 и продолжало цикл от 0 до 3.

"type" => $types[$i % 4],
0 голосов
/ 21 января 2020

Определенно, потому что ваши типы переменных состоят только из 4 элементов, и когда переменная i в вашем поле l oop равна 4, тогда она выдаст ошибку неопределенного смещения 4. Чтобы решить эту проблему.

Измените это , "type" => $ types [$ i]

To, "type" => $ types [rand (0, 3)]

...