Привязка секций с контентом на разных страницах
Есть таблицы pages, sections, и идея такая, что к странице будут привязаны секции, одна секция содержит какой-то один блок с контентом на странице.
Подскажите, как можно организовать привязку секций к страницам?
В админке будут создаваться отдельно страницы и отдельно секции, в секциях будет указано, к какой странице привязана секция.
Schema::create('pages', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('alias')->unique();
$table->text('keywords')->nullable();
$table->text('description')->nullable();
$table->boolean('status')->default(true);
$table->timestamps();
});
Schema::create('sections', function (Blueprint $table) {
$table->id();
$table->string('name')->nullable();
$table->text('content')->nullable();
$table->string('pointer')->unique();
$table->string('type')->nullable();
$table->smallInteger('position')->default(0);
$table->unsignedBigInteger('page_id');
$table->boolean('status')->default(true);
$table->timestamps();
$table->foreign('page_id')->references('id')->on('pages')
->onDelete('cascade')
->onUpdate('cascade');
});
Подойдёт ли такой вариант, что к примеру в поле pointer будет задаваться имя секции
(index.top, index.section1, index.section2)
или
(contacts.header, contacts.section1, contacts.section2)
здесь index и contacts к примеру будут означать главная и страница контактов а через точку название секции, чтобы в blade можно было бы выбирать нужную секцию.
Посоветуйте пожалуйста, как это можно организовать?
Немного сбивает с толку нужны ли здесь поля pointer или хватит только поля position?
т.е. чтобы потом удобно было в blade выбирать нужные секции
И как привязывать страницы с секциями к конкретному контроллеру, относящиеся к конкретной странице?
к примеру подойдёт ли вариант выборки нужной страницы из базы на основе имени роутера?