Структура базы данных для категорий, подкатегорий и услуг - PullRequest
0 голосов
/ 29 декабря 2018

Я использую Laravel 5.5 и MySql.Я не могу понять, как связать Категории и Подкатегории со Службами, не добавив столбец subCategoryID в таблицу Services.

В настоящее время это моя структура таблицы

Service_Categories

id, name
1, Legal Services
2, Personal Drivers

Service_Sub_Categories

id, ServiceCategoryID, name
1, 1, US Legal Services
2, 1, Europe Legal Services
3, 1, Canada Legal Services

Службы

id, serviceCategoryID, name
1, 1, US Legal Services Comapny INC
2, 1, Canada Legal Services Company INC
3, 2, JSY Personal Drivers
4, 2, XYZ Personal Drivers

Одна служба должна иметь хотя бы 1 категорию служб, но она также может иметь 0 или более подкатегорий

Как видите, у «Личных водителей» нет подкатегории, но у юридических служб много подкатегорий.Когда пользователь выбирает «Юридические услуги США», я хочу только подтянуть их.Я мог бы легко добавить столбец subCategoryID в таблицу Services, но в будущем у меня могут быть подкатегории.Каков наилучший способ структурировать мои таблицы?

1 Ответ

0 голосов
/ 29 декабря 2018

Если вам нужно получить все подкатегории службы, вы можете использовать следующие отношения:

Модель службы

public function category() {
    return $this->hasOne('App\Categories', 'id', 'service_category_id');
}

Категории Модель

public function subCategories()
{
    return $this->hasMany('App\subCategories', 'service_category_id');
}

Получить все подкатегории для идентификатора услуги 1:

Service::find(1)->category->subCategories

Или, если вам нужно, из категории, чтобы получить услугу и все его подкатегории:

Категории Модель

public function service() {
    return $this->hasOne('App\Service', 'service_category_id');
}

Сервисная модель

public function subCategories()
{
    return $this->hasMany('App\subCategories', 'service_category_id');
}

И получить все подкатегории для идентификатора категории 1:

Categories::find(1)->service->subCategories;

ОБНОВЛЕНИЕ

Также вы можете использовать отношение - имеет много через

https://laravel.com/docs/5.7/eloquent-relationships#has-many-through

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...