gpt4 book ai didi

mysql - 类别、子类别和服务的数据库结构

转载 作者:行者123 更新时间:2023-11-29 16:30:28 27 4
gpt4 key购买 nike

我正在使用 Laravel 5.5 和 MySql。如果不向 Services 表中添加 subCategoryID 列,我无法弄清楚如何将类别和子类别与服务相关联。

目前这是我的表结构

服务类别

id, name
1, Legal Services
2, Personal Drivers

服务子类别

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 表中,但将来我可能会有子类别。构建表格的最佳方式是什么?

最佳答案

如果需要获取服务的所有子类别,可以使用以下关系:

服务模式

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

类别模型

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

获取服务 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');
}

并获取类别 id 1 的所有子类别:

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

更新

您也可以使用关系 - Has Many Through

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

关于mysql - 类别、子类别和服务的数据库结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53965391/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com