b2in/database/seeders/FaqCategoriesSeeder.php
Kevin Adametz dc31cdb401 FAQ im Inhalte-Editor vollständig bearbeitbar: Bereich je Frage statt verschachtelter sections
Die Bereiche der FAQ-Seite lagen als verschachtelte Listen in sections, der Editor zeigte
davon nur JSON-Text. Jetzt stehen alle Fragen in questions mit dem Feld category, Überschrift
und Symbol der Bereiche in categories. FAQ::groups baut daraus die Seite (allgemeine Fragen
zuerst), alte Einträge werden weiter dargestellt. FaqCategoriesSeeder stellt gespeicherte
Einträge um (FAQ und Immobilien-FAQ), Texte bleiben.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 09:50:44 +00:00

44 lines
1.6 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace Database\Seeders;
use App\Livewire\Web\Components\Sections\FAQ;
use FluxCms\Core\Models\CmsContent;
use FluxCms\Core\Services\CmsContentService;
use Illuminate\Database\Seeder;
/**
* FAQ im Inhalte-Editor vollständig bearbeitbar machen (09.10.2026).
*
* Die Bereiche der FAQ-Seite („Für Ihr Zuhause“, „Für Projekte und Objekte“) lagen verschachtelt
* in `sections`, je mit eigener Fragenliste – der Editor zeigte davon nur JSON-Text. Jetzt steht
* jede Frage in `questions` und trägt ihren Bereich in `category`; Überschrift und Symbol der
* Bereiche stehen in `categories`. Texte und Reihenfolge bleiben, wie sie gepflegt sind.
* Bereits umgestellte Einträge bleiben unberührt, mehrfaches Ausführen ist unbedenklich.
*
* php artisan db:seed --class=FaqCategoriesSeeder
*/
class FaqCategoriesSeeder extends Seeder
{
public function run(): void
{
$changed = 0;
foreach (CmsContent::query()->where('group', 'faq')->whereIn('key', ['faq', 'faq_immobilien'])->get() as $row) {
$value = $row->getTranslations('value');
$updated = array_map(fn (mixed $content): mixed => is_array($content) ? FAQ::flatten($content) : $content, $value);
if ($updated !== $value) {
$row->value = $updated;
$row->save();
$changed++;
}
}
if ($changed > 0) {
app(CmsContentService::class)->clearCache('faq');
}
$this->command?->info("FAQ: {$changed} Einträge auf Bereiche je Frage umgestellt.");
}
}