Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Мне объяснили, что и как делать.
Тема не актуальна.
Ребят, я для себя пилю пет-проект магазина на laravel 8.
И для себя я хочу выяснить, как правильно организовать БД для товаров и их вариаций, при том, что у меня будут кастомные атрибуты этих товаров/вариаций.
Вот моя схема, которую я планирую реализовать. Здесь я реализовываю паттерн/антипаттерн "EAV",
поскольку предполагается, что менеджер магазина сам будет решать, какие атрибуты добавлять к товару, а какие - удалять.
Такая схема нормальная или ее можно как-то доработать для улучшения производительности?
Товаров может быть около нескольких сотен с неизвестным набором параметров.
Если есть иные способы реализации гибкого управления динамическим набором параметров - я буду очень признателен за совет.
Я, как начинающий ларавельщик, наткнулся на один интересный для себя вопрос.
Как мне из записи в основной таблицы выбрать, какой дополнительный компонент или какие дополнительные данные мне надо будет отображать. Есть какое-нибудь универсальное решение для этого?
Покажу такое решение, знаю, что оно тупое и блейд не умеет парсить x-теги, которые записаны в поле записи.
Какими путями я могу динамически выбрать, какую дополнительную модель можно вызвать?
Схема миграции Page:
public function up()
{
Schema::create('pages', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->text('content')->nullable();
$table->string('tagComponent')->nullable();
$table->timestamps();
});
}
Это шаблон страницы Page
@extends('layouts.app')
@section('content')
<h1>{{$page->title}}</h1>
<div class="container">
<div class="content">
{!! $page->content !!}
</div>
{{-- <x-vacancy/> --}}
{{-- компонент успешно создан и выдает все записи из модели Vacancy, если вызвать его в любом месте верстки--}}
<div>
{!! $page->tagComponent !!} {{-- там выводится <x-vacancy/>, блейд его парсить не будет и выведет как есть --}}
</div>
</div>
@endsection
Или вообще это все фигня, я все слишком усложняю и мне надо просто, грубо говоря,из записи в контроллере выдернуть поле tagComponent и проверять его значение в switch-case-default, который вернет шаблон с заранее определенным нужным компонентом?
Страницы 1