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

更新日期: 2019-04-11 阅读次数: 526 字数: 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年07月23日 大暑
2019年07月30日 非洲妇女日
2019年08月01日 八一建军节
2019年08月06日 国际电影节
2019年08月07日 七夕
2019年08月08日 立秋
2019年08月15日 日本投降日
2019年08月15日 中元节
2019年08月23日 处暑
2019年09月03日 抗日胜利纪念日
2019年09月08日 白露
2019年09月08日 国际扫盲日
查看更多节日