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

dced5bon  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(330)

我使用的是laravel5.5和mysql。如果不添加 subCategoryID 列到 Services table。
目前这是我的表结构
服务类别

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

一个服务必须至少有一个服务类别,但也可以有0个或多个子类别
如您所见,私人司机没有子类别,但法律服务有许多子类别。当用户选择“美国法律服务”时,我只想把它们拉上来。我可以很容易地添加一个 subCategoryID 列到 Services 但在未来我可能会有子类。组织我的table的最好方法是什么?

qyyhg6bp

qyyhg6bp1#

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

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;

更新
你也可以用关系-有很多通过
https://laravel.com/docs/5.7/eloquent-relationships#has-许多通过

相关问题