首页 > 解决方案 > Singleton 在 Laravel 中反复运行

问题描述

当我的 Laravel 应用程序第一次运行时,我想将我的模型的一些实体添加到数据库中。为此,我使用单例:

AppServiceProvider.php

public function boot()
{
    $this->app->singleton(InitializeRoles::class, function() {
        return new InitializeRoles();
    });
}

还有我的 InitializeRoles.php:

class InitializeRoles
{

    public function __construct()
    {
        \App\Role::create(['name' => 'owner'])->save();
        \App\Role::create(['name' => 'moderator'])->save();
    }

}

但是,当添加对数据库的查询时,下次刷新我的网站时会Duplicate entry 'owner' for key出错,因为该name字段是唯一的。为什么角色模型的实例被一次又一次地创建?为什么单例类不只运行一次?

标签: phplaravel

解决方案


推荐阅读