b2in/packages/flux-cms/core/database/seeders-reference/CmsFaqSeeder.php
2026-04-10 17:18:17 +02:00

60 lines
1.8 KiB
PHP

<?php
namespace Database\Seeders;
use FluxCms\Core\Models\CmsFaq;
use Illuminate\Database\Seeder;
class CmsFaqSeeder extends Seeder
{
public function run(): void
{
$locales = ['de', 'en'];
$faqsByLocale = [];
foreach ($locales as $locale) {
$path = lang_path("{$locale}/faqs.php");
if (file_exists($path)) {
$faqsByLocale[$locale] = require $path;
}
}
$deData = $faqsByLocale['de'] ?? [];
$enData = $faqsByLocale['en'] ?? [];
$allCategories = array_unique(array_merge(array_keys($deData), array_keys($enData)));
foreach ($allCategories as $category) {
$deCategory = $deData[$category] ?? [];
$enCategory = $enData[$category] ?? [];
$deItems = $deCategory['items'] ?? [];
$enItems = $enCategory['items'] ?? [];
$maxCount = max(count($deItems), count($enItems));
for ($i = 0; $i < $maxCount; $i++) {
$de = $deItems[$i] ?? [];
$en = $enItems[$i] ?? [];
CmsFaq::create([
'category' => $category,
'question' => array_filter([
'de' => $de['question'] ?? null,
'en' => $en['question'] ?? null,
]),
'answer' => array_filter([
'de' => $de['answer'] ?? null,
'en' => $en['answer'] ?? null,
]),
'help' => array_filter([
'de' => $de['help'] ?? null,
'en' => $en['help'] ?? null,
]) ?: null,
'is_published' => true,
'order' => $i,
]);
}
}
}
}