2016-03-04 2 views
0

Я пытаюсь заполнить таблицу базы данных более чем 1000 строками данных (произвольно сгенерированные числа). Мой код:Попытка заполнить таблицу базы данных из петли php

$input = new Card($request->all()); 
    $i = 1; 
    while($i <= 1000){ 
     $input->pin = intval("2" . rand(100,999) . rand(10000,99999)); 
     $input->save(); 
     $i++; 
    } 

Проблема заключается в том, что только один данные передаются в базу данных. Я также попытался это for петля тоже с:

$input = new Card($request->all()); 
    for($i=1; $1<= 1000;$i++){ 
     $input->pin = intval("2" . rand(100,999) . rand(10000,99999)); 
     $input->save(); 
    } 

И с той же проблемой, только один ряд пострадавших.

+0

Проблема, вероятно, в этой функции или классе. – Mihai

+0

Трудно сказать, не видя ваш класс карты, но я мог бы подозревать, что использование точки вместо запятой в intval («2». Rand (100,999). Rand (10000,99999)) также может быть фактором. – Anton

ответ

1

Ваша проблема в том, что вы сохраняете то же самое Card каждый раз, не создавая новых.

Попробуйте следующее ...

for ($i=1; $1<= 1000; $i++) { 
    $card = Card::newInstance($request->all()); 
    $card->pin = intval("2" . rand(100,999) . rand(10000,99999)); 
    $card->save(); 
} 
+0

Спасибо за ответ, который был проблемой. Как только я попробовал, это сработало. еще раз спасибо – user2245190

0

Вы можете выбрать что-то вроде следующего подхода:

$password = Hash::make('secret'); 

    for ($i = 1; $i <= 1000; $i++) 
    { 
     $users[] = [ 
      'email' => 'user'. $i .'@myapp.com', 
      'password' => $password 
     ]; 
    } 

    User::insert($users); 

Это также значительно повысить производительность.