【问题标题】:Database structure for categories, sub-categories, and services类别、子类别和服务的数据库结构
【发布时间】:2019-05-26 16:25:02
【问题描述】:

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

目前这是我的表结构

服务类别

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

【问题讨论】:

    标签: mysql laravel laravel-5


    【解决方案1】:

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

    服务模式

    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-many-through

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-15
      • 2017-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 2016-07-29
      相关资源
      最近更新 更多