Files
laravel-test/database/seeders/SettingSeeder.php
2026-03-30 19:15:13 +02:00

51 lines
2.0 KiB
PHP

<?php
namespace Database\Seeders;
// ─────────────────────────────────────────────────────────────────────────────
// SettingSeeder — Popola la tabella settings con i valori di default
//
// Questo seeder legge i default da config/settings.php e li inserisce
// nel database al primo avvio.
//
// È idempotente: puoi eseguirlo più volte senza duplicati (usa updateOrCreate)
// ─────────────────────────────────────────────────────────────────────────────
use App\Models\Setting;
use Illuminate\Database\Seeder;
class SettingSeeder extends Seeder
{
public function run(): void
{
$defaults = config('settings.defaults', []);
$descriptions = config('settings.descriptions', []);
$types = config('settings.types', []);
$groups = config('settings.groups', []);
// Costruisce una mappa chiave → gruppo
$keyToGroup = [];
foreach ($groups as $groupName => $keys) {
foreach ($keys as $key) {
$keyToGroup[$key] = $groupName;
}
}
foreach ($defaults as $key => $value) {
// updateOrCreate: se esiste già una riga con quell'key, la aggiorna;
// altrimenti la crea. Perfetto per rieseguire il seeder in sicurezza.
Setting::updateOrCreate(
['key' => $key],
[
'value' => is_bool($value) ? ($value ? '1' : '0') : (string) $value,
'label' => $descriptions[$key] ?? $key,
'group' => $keyToGroup[$key] ?? 'Generale',
'type' => $types[$key] ?? 'string',
]
);
}
$this->command->info('✓ Impostazioni di default inserite nella tabella settings.');
}
}