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

更新日期: 2019-04-11 阅读次数: 985 字数: 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年12月07日 大雪
2019年12月09日 "一二九"运动纪念日
2019年12月09日 世界足球日
2019年12月10日 世界人权日
2019年12月12日 西安事变纪念日
2019年12月13日 南京大屠杀
2019年12月20日 澳门回归日
2019年12月21日 国际篮球日
2019年12月22日 冬至
2019年12月24日 平安夜
2019年12月25日 圣诞节
查看更多节日