@PRodion

Как спроектировать базу данных?

Route
<?php
    
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\YarnController;
    
Route::get('/yarn/{slug}', [YarnController::class, 'show'])->name('yarn.show');

YarnController
<?php
    
namespace App\Http\Controllers;
    
use App\Http\Controllers\Controller;
use App\Models\Yarn;
    
class YarnController extends Controller
{
    public function show($slug)
    {
        return view('yarn.show', [
            'yarns' => Yarn::where('slug', $slug)->get()
        ]);
    }
}

Условием выборки является slug Если в базе есть товары (пряжа) с таким slug, то мы показываем их пользователю.

Хочу реализовать:

У товара (пряжи) есть связанные модели. Country, Manufacturer, Fiber и т.д. Они имеют свой slug. Неплохо бы включить их в условие выборки.
/yarn/alize (Manufacturer)
/yarn/acrylic (Fiber)
/yarn/alize-lana-gold (Yarn)

Есть идея хранить все slug в одной таблице. При выборки товаров (пряжи) проверять, есть там такой slug или нет.

Просто пример. Наверное это так работать не будет.
Yarn::whereHas('table', function($query) use ($slug) {
    $query->where('slug', $slug);
})->get();

Трудность еще в том, что Country и Manufacturer имеет отношение один ко многим, а Fiber многие ко многим.

Не понятно, как при добавлении новой страны (например) записать все данные страны в таблицу Country, а слоган в таблицу Slug.

Любые идеи как реализовать?
  • Вопрос задан
  • 141 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы