首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何去/戈姆一个巨无霸?

如何去/戈姆一个巨无霸?
EN

Stack Overflow用户
提问于 2022-05-03 18:41:40
回答 1查看 41关注 0票数 1

我在Go中编写了一个电子商务应用程序,我已经被困在超级游戏中一段时间了,我试图用PostgreSQL表来实现它。最终结果是JSON响应,如下所示:

代码语言:javascript
复制
[
{ 
    "ID": 5000,
    "Name": "Department 1",
    "Slug": "",
    "CategoryGroups": [
      {
        "ID": 1000,
        "Name": "Category Group 1",
        "Slug": "",
        "Categories": [
          {
            "ID": 1,
            "Name": "Category A",
            "Slug": "category-a"
          },
          {
            "ID": 2,
            "Name": "Category B",
            "Slug": "category-b"
          },
     },
     {
        "ID": 1001,
        "Name": "Category Group 2",
        "Slug": "category-group-2",
     },
},
{ 
    "ID": 5001,
    "Name": "Department 2",
    "Slug": "department-2",
}
]

我尝试了以下方法(SQLFiddle):

表:

代码语言:javascript
复制
type Course struct {
    gorm.Model
    CourseName string `json:"course_name"`
    CourseSlug string `json:"course_slug"`
}

type Subject struct {
    gorm.Model
    SubjectName string `json:"subject_name"`
    SubjectSlug string `json:"subject_slug"`
    CourseID    int    `json:"course_id"`
}

type Chapter struct {
    gorm.Model
    ChapterName string `json:"chapter_name"`
    ChapterSlug string `json:"chaper_slug"`
    SubjectID   int    `json:"subject_id"`
}

type Subchapter struct {
    gorm.Model
    SubchapterName string `json:"subchapter_name"`
    SubchapterSlug string `json:"subchapter_slug"`
    ChapterID      int    `json:"chapter_id"`
}

type CourseSubjChapterSub struct {
    CourseName     string `json:"course_name"`
    CourseSlug     string `json:"course_slug"`
    SubjectName    string `json:"subject_name"`
    SubjectSlug    string `json:"subject_slug"`
    ChapterName    string `json:"chapter_name"`
    ChapterSlug    string `json:"chaper_slug"`
    SubchapterName string `json:"subchapter_name"`
    SubchapterSlug string `json:"subchapter_slug"`
}

查询:

代码语言:javascript
复制
var res []models.CourseSubjChapterSub

    db.DBClient.Model(&models.Course{}).
        Select("courses.course_name, courses.course_slug, subjects.subject_name, subjects.subject_slug, chapters.chapter_name, chapters.chapter_slug, subchapters.subchapter_name, subchapters.subchapter_slug").
        Joins("LEFT JOIN subjects ON courses.id = subjects.course_id").
        Joins("LEFT JOIN chapters ON subjects.id = chapters.subject_id").
        Joins("LEFT JOIN subchapters ON chapters.id = subchapters.chapter_id").
        Scan(&res)

    log.Println(res)

结果(日志):

代码语言:javascript
复制
[
{Web Designing web-design HTML html HTML Form html-form  }
{Web Designing web-design HTML html HTML Image html-image  }
{Web Designing web-design HTML html HTML Link html-link HTML Image Link html-image-link}
{Web Designing web-design HTML html HTML Link html-link HTML Text Link html-text-link}
{Web Designing web-design HTML html HTML List html-list HTML Ordered List html-ordered-list}
{Web Designing web-design HTML html HTML List html-list HTML Unordered List html-unordered-list}
{Web Designing web-design HTML html HTML Text html-text HTML Heading html-heading}
{Web Designing web-design HTML html HTML Text html-text HTML Paragraph html-paragraph}
{Web Designing web-design CSS css CSS Border css-border CSS Border Color css-border-color}
{Web Designing web-design CSS css CSS Border css-border CSS Border Style css-border-style}
{Web Designing web-design CSS css CSS Border css-border CSS Border Width css-border-width}
{Web Designing web-design CSS css CSS Position css-position CSS Absolute Position css-absolute-position}
{Web Designing web-design CSS css CSS Selector css-selector CSS Element Selector css-element-selector}
{Web Designing web-design JavaScript javascript    }
{Web Development web-development PHP php PHP Arrays php-arrays PHP Associative Array php-associative-array}
{Web Development web-development PHP php PHP Arrays php-arrays PHP Index Array php-index-array}
{Web Development web-development PHP php PHP Conditions php-conditions PHP If Condition php-if-condition}
{Web Development web-development PHP php PHP Conditions php-conditions PHP Switch Condition php-switch-condition}
{Web Development web-development Python python    }
{Web Development web-development .NET dotnet    }
{Programming programming Java java Java Methods java-methods Java Method Overloading java-method-overloading}
{Programming programming Java java Java Methods java-methods Java Method Parameter java-method-parameter} {Programming programming C++ cpp    }
]

我还尝试使用一个类别表并手动分配部门和类别组,然后通过JavaScript在客户端执行一些逻辑来创建megamenu。这也有效,但不完全是我想要的.

任何帮助都会很感激的,干杯

EN

回答 1

Stack Overflow用户

发布于 2022-05-12 19:29:13

答案很简单,我只是在Gorm文档中漏掉了它。

  1. 修改如下结构:
代码语言:javascript
复制
type Course struct {
  ...
  Subjects []Subject
}
  1. 更新多个课程和查询的res变量
代码语言:javascript
复制
var res []models.Course
db.Preload("Subjects.Chapters.Subchapters").
  Preload(clause.Associations).
  Find(&res)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72104034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档