Skip to content

Instantly share code, notes, and snippets.

@mnoskov
Last active November 8, 2021 17:58
Show Gist options
  • Save mnoskov/76680c7433f3ae63e22c0674e3d18eea to your computer and use it in GitHub Desktop.
Save mnoskov/76680c7433f3ae63e22c0674e3d18eea to your computer and use it in GitHub Desktop.
Create TV seeder
<?php
namespace Database\Seeders;
use EvolutionCMS\Models\{SiteTemplate, SiteTmplvarTemplate, SiteTmplvar};
use Illuminate\Database\Seeder;
class CreateTVSeeder extends Seeder
{
protected function getTemplateAliasesToAssign()
{
return [
'main',
'info',
];
}
protected function getTemplateVarsData()
{
return [
'name' => [
'caption' => 'Название',
'type' => 'text',
],
];
}
public function run()
{
$this->createTemplateVars();
evo()->clearCache('full');
}
protected function createTemplateVars()
{
$templates = $this->getTemplates();
foreach ($this->getTemplateVarsData() as $tvName => $tvData) {
$tv = $this->createTemplateVar($tvName, $tvData);
$this->createTemplateRelations($tv, $templates);
}
}
protected function getTemplates()
{
return SiteTemplate::query()
->whereIn('alias', $this->getTemplateAliasesToAssign())
->get();
}
protected function createTemplateVar($name, $data)
{
return SiteTmplvar::updateOrCreate([
'name' => $name,
], $data);
}
protected function createTemplateRelations(SiteTmplvar $tv, $templates)
{
foreach ($templates as $template) {
SiteTmplvarTemplate::query()->insertOrIgnore([
'tmplvarid' => $tv->id,
'templateid' => $template->id,
]);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment