修改 backpack SettingsTableSeeder 逻辑,只插入新增的配置

更新日期: 2019-04-11 阅读次数: 135 字数: 142 分类: backpack

Laravel backpack SettingsTableSeeder 的默认逻辑非常不人性化,直接 truncate 配置表,然后重新写入配置。

php artisan db:seed --class=SettingsTableSeeder

对于线上系统已有配置的情况下,非常不合理。

所以将逻辑调整了一下,改成了只写入不存在的 key。

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

    foreach ($this->settings as $index => $setting) {
        $record = DB::table('settings')->where('key', $setting['key'])
            ->first();

        if ($record) {
            $this->command->info($setting['key'] . ' existed, ignore...');
        } else {
            $result = DB::table('settings')->insert($setting);

            if (!$result) {
                $this->command->info("Insert failed at record $index.");

                return;
            }
        }
    }

    $this->command->info('Inserted '.count($this->settings).' records.');
}

爱评论不评论

近期节日

2019年04月26日 知识产权日
2019年04月30日 全国交通安全反思日
2019年05月01日 国际劳动节
2019年05月04日 五四青年节
2019年05月06日 立夏
2019年05月08日 世界红十字日
2019年05月08日 世界微笑日
2019年05月12日 国际护士节
2019年05月12日 母亲节
2019年05月12日 佛诞
2019年05月15日 国际家庭日
2019年05月17日 世界电信日
查看更多节日