Heim >PHP-Framework >Laravel >Detaillierte Erklärung, wie Laravel Seeder Millionen von Simulationsdaten generiert
wird der Laravel Seeder vorgestellt, der eine Million Simulationsdaten generiert. Ich hoffe, dass er den Freunden, die ihn brauchen, hilfreich sein wird!
Laravel integriert die Faker-Bibliothek und stellt Seeder bereit, um uns bei der einfachen Generierung von Simulationsdaten zu helfen.Schreiben Sie zuerst den Data Warehouse- und Datenfüllcode.
Data Warehouse-Code Thementabelle, was sehr praktisch ist.
use App\Models\Topic;use Faker\Generator as Faker;$factory->define(Topic::class, function (Faker $faker) { $sentence = $faker->sentence(); // 随机取一个月以内的时间 $updated_at = $faker->dateTimeThisMonth(); // 传参为生成最大时间不超过,因为创建时间永远比更改时间要早 $created_at = $faker->dateTimeThisMonth($updated_at); return [ 'title' => $sentence, 'body' => $faker->text(), 'excerpt' => $sentence, 'created_at' => $created_at, 'updated_at' => $updated_at, ];});
Wenn wir 1 Million Daten einfügen möchten, können wir dann einfach die Parameter von times() auf 1000.000 ändern? Wenn Sie dies tun, wird die folgende Fehlermeldung angezeigt:
class TopicsTableSeeder extends Seeder{ /** * Run the database seeds. * * @return void */ public function run() { // 所有用户ID数组,如:[1,2,3,4] $user_ids = User::all()->pluck('id')->toArray(); // 所有分类 ID 数组,如:[1,2,3,4] $category_ids = Category::all()->pluck('id')->toArray(); // 获取 Faker 实例 $faker = app(Faker\Generator::class); $topics = factory(Topic::class) ->times(1000) ->make() ->each(function ($topic, $index) use ($user_ids, $category_ids, $faker){ // 从用户 ID 数组中随机取出一个并赋值 $topic->user_id = $faker->randomElement($user_ids); // 话题分类,同上 $topic->category_id = $faker->randomElement($category_ids); }); // 将数据集合转换为数组,并插入到数据库中 Topic::insert($topics->toArray()); }}
Dieses Problem liegt daran, dass MySQL standardmäßig maximal 65535 (2 ^ 16-1) Platzhalter unterstützt und die geschriebenen Daten m Spalten und n Zeilen umfassen. m*n muss kleiner als 65535 sein.
Es ist also unmöglich, eine große Datenmenge auf einmal einzufügen. Nach der Prüfung
gibt es keinen relevanten Parameter für die Anzahl der Ausführungen. Schließlich habe ich beschlossen, das Problem mithilfe eines Shell-Skripts zu lösen.php artisan db:seed --class=TopicsTableSeederWarten Sie einen Moment, Sie werden feststellen, dass 1 Million Daten generiert wurden! PS: Der Data Warehouse- und Datenfüllcode stammt von larabbs
php artisan db:seed
Die neuesten fünf Laravel-Video-Tutorials
Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung, wie Laravel Seeder Millionen von Simulationsdaten generiert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!