Home  >  Article  >  PHP Framework  >  How Laravel fills SQL data gracefully

How Laravel fills SQL data gracefully

藏色散人
藏色散人forward
2021-01-26 13:43:382227browse

The following column Laravel Tutorial will introduce to you laravel’s method of solving Laravel’s elegant filling of SQL data. I hope it will be helpful to friends in need!

How Laravel fills SQL data gracefully

Background

We all know that during the Laravel development process, modifications to the database structure can be made through migration Complete, pre-population of database production data can be completed using seeder.

If there is a lot of pre-populated data and it is generated during the development process, the insertion in handwritten seeder seems too rigid, and you may need to copy and modify it one by one. These contents:

\DB::table('software_categories')->insert(array(
            0 =>
                array(
                    'id' => 1,
                    'name' => '操作系统',
                    'description' => NULL,
                    'deleted_at' => NULL,
                    'created_at' => '2021-01-19 19:22:31',
                    'updated_at' => '2021-01-19 19:22:36',
                    'parent_id' => NULL,
                    'order' => '0',
                ),
            1 =>
                array(
                    'id' => 2,
                    'name' => '办公应用',
                    'description' => NULL,
                    'deleted_at' => NULL,
                    'created_at' => '2021-01-19 19:22:53',
                    'updated_at' => '2021-01-19 19:22:53',
                    'parent_id' => NULL,
                    'order' => '0',
                ),
            2 =>
                array(
                    'id' => 3,
                    'name' => '图像处理',
                    'description' => NULL,
                    'deleted_at' => NULL,
                    'created_at' => '2021-01-19 19:22:59',
                    'updated_at' => '2021-01-19 19:22:59',
                    'parent_id' => NULL,
                    'order' => '0',
                ),
            3 =>
                array(
                    'id' => 4,
                    'name' => '网络工具',
                    'description' => NULL,
                    'deleted_at' => NULL,
                    'created_at' => '2021-01-19 19:23:04',
                    'updated_at' => '2021-01-19 19:23:10',
                    'parent_id' => NULL,
                    'order' => '0',
                ),
            4 =>
                array(
                    'id' => 5,
                    'name' => '影音工具',
                    'description' => NULL,
                    'deleted_at' => NULL,
                    'created_at' => '2021-01-19 19:23:35',
                    'updated_at' => '2021-01-19 19:23:35',
                    'parent_id' => NULL,
                    'order' => '0',
                ),
            5 =>
                array(
                    'id' => 6,
                    'name' => '系统工具',
                    'description' => NULL,
                    'deleted_at' => NULL,
                    'created_at' => '2021-01-19 19:23:47',
                    'updated_at' => '2021-01-19 19:23:47',
                    'parent_id' => NULL,
                    'order' => '0',
                ),
            6 =>
                array(
                    'id' => 7,
                    'name' => '设计工具',
                    'description' => NULL,
                    'deleted_at' => NULL,
                    'created_at' => '2021-01-19 19:24:05',
                    'updated_at' => '2021-01-19 19:24:05',
                    'parent_id' => NULL,
                    'order' => '0',
                ),
        ));

If there is enough data, I believe you will find a good way to batch process it.

Option

One, I can export the .sql file from the database after all the pre-populated data are processed during the development process. Then import it into the production environment as a script.

Second, I can structure the existing data in the database and generate a seeder file, which can then be filled in through the artisan db:seed command.

Both methods are available.

SQL files are imported directly

Use database management tools such as HeidiSQL to export the required database tables to the .sql file.

In Laravel, you can write a command, and write the following code in the logic:

DB::unprepared(file_get_contents('path/data.sql'));

Seeder fills

This This is the best solution in my opinion. After all, Laravel provides a complete database migration and filling mechanism, why not take advantage of it?

Execute composer require orangehill/iseed -vvv installation package.

Execute php artisan iseed table_name will automatically create a seeder file corresponding to the table name in the database/seeders directory.

Then, we can use artisan db:seed --class=YourTableSeeder to specify the filling.

The above is the detailed content of How Laravel fills SQL data gracefully. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:learnku.com. If there is any infringement, please contact admin@php.cn delete