【问题标题】:Is there a initalSetup() function or something like that in laravel?laravel 中是否有 initalSetup() 函数或类似的函数?
【发布时间】:2016-05-31 01:01:10
【问题描述】:

我在 Laravel 中开发了一个应用程序(我使用这个插件来添加角色/权限https://github.com/Zizaco/entrust

我需要在 Laravel 中为我的应用创建一些基本数据,仅在第一次使用该应用时(一些角色和权限),这些数据不应该每次都创建。

我找不到可以使用的功能或事件。 我尽量避免这样做:

if(role is not created)
    create it
else
    do nothing

【问题讨论】:

  • 如果您在谈论播种,请阅读documentation
  • 如果你在谈论如何使用 mysql cli 然后阅读basic tutorial (没办法,播种更容易)

标签: php laravel laravel-5


【解决方案1】:

通过创建播种器来设置基本应用数据或播种:

php artisan make:seeder RolesTableSeeder

它将生成database/seeder/RolesTableSeeder.php,打开该文件然后插入您的初始角色,示例如下:

use Illuminate\Database\Seeder;

class RolesTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        DB::table('roles')->truncate();

        $roles = [
            [
                'id' => 1,
                'name' => 'Administrator',
                'slug' => 'admin',
                'created_at' => \Carbon\Carbon::now(),
                'updated_at' => \Carbon\Carbon::now(),
            ],
            [
                'id' => 2,
                'name' => 'Moderator',
                'slug' => 'moderator',
                'created_at' => \Carbon\Carbon::now(),
                'updated_at' => \Carbon\Carbon::now(),
            ],
        ];

        DB::table('roles')->insert($roles);
    }
}

然后在DatabaseSeederclass 上注册播种机:

public function run()
{
    ...

    $this->call(RolesTableSeeder::class);
}

最后运行php artisan db:seed,对其他表执行同样的操作。

如果您想插入虚假数据(例如虚假用户)进行测试,请使用model factories

【讨论】:

    猜你喜欢
    • 2011-08-20
    • 2019-10-21
    • 1970-01-01
    • 2013-12-11
    • 1970-01-01
    • 2013-05-03
    • 2011-08-01
    • 2014-06-14
    • 2014-10-06
    相关资源
    最近更新 更多