📜  在 laravel 中使用播种机插入数据 - PHP (1)

📅  最后修改于: 2023-12-03 15:37:23.310000             🧑  作者: Mango

在 Laravel 中使用播种机插入数据

在 Laravel 中,我们可以使用播种机(seeder)来快速填充数据库表的数据。播种机可以用于测试、示例数据、初始化数据等。

准备工作

首先,打开命令行终端并进入 Laravel 项目根目录。然后执行以下命令,创建一个新的播种机:

php artisan make:seeder UsersTableSeeder

创建成功后,我们可以在 database/seeds 目录下看到一个新的 UsersTableSeeder.php 文件。

现在,打开 UsersTableSeeder.php 文件,并进行如下修改:

use Illuminate\Database\Seeder;
use DB;

class UsersTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        DB::table('users')->insert([
            'name' => 'John Doe',
            'email' => 'johndoe@example.com',
            'password' => bcrypt('secret'),
        ]);

        // 这里可以添加更多的用户数据...
    }
}

run() 方法中,我们使用 DB 类的 table()insert() 方法向 users 表中插入一条用户数据。需要注意的是,在 Laravel 5.8 及更高版本中,insert() 方法第二个参数必须为数组类型,因此我们使用数组字面量来表示需要插入的数据。

执行播种

执行以下命令,运行刚刚创建的播种机:

php artisan db:seed --class=UsersTableSeeder

这条命令会自动调用 UsersTableSeeder 类中的 run() 方法,并向 users 表中插入数据。

更多操作

除了以上介绍的基本用法,播种机还拥有以下特性:

  • DatabaseSeeder 类:在 database/seeds 目录下还有一个 DatabaseSeeder.php 文件,该文件是一个抽象类,可以用于运行所有的播种机。
  • Seeder 前置条件:在某些场景下,我们需要确保某个表已经存在才能进行播种操作,此时可以使用 before() 方法来设置前置条件。
  • 播种机自动生成:使用 make:seeder 命令可以快速创建一个新的播种机,该命令还支持 --database--force--path 等选项,可以方便地指定数据库、强制覆盖已存在的播种机和指定具体的路径等。
  • 播种机回滚:在某些情况下,我们可能需要回滚播种机对数据库的操作,此时可以使用 php artisan db:seed --class=UsersTableSeeder --pretend 命令来预览播种机的操作,以确保不会误删除重要数据。
总结

通过本文的介绍,我们了解到了如何在 Laravel 中使用播种机插入数据,以及更多的特性和操作方法。播种机是一个很强大的工具,能够帮助我们快速地填充数据库表的数据,进而提高开发效率。