多くのクエリに多くの1、多くの1つにGORM関係1、

機能を実現するためには。
記事のカテゴリに属しています。
記事は、複数のラベルを持っています

事前に作成されたデータベースの4つの関連するテーブルのテーブルなし外部キー関係

  • article表
  • タグテーブル。
  • article_tag表
  • カテゴリテーブル
//文章表
type Article struct {
  Id int `json:"id"`
  Title string `json:"title"`
  CategoryId int `json:"category_id"`
  Category Category `json:"category";gorm:"foreignkey:CategoryID"`//指定关联外键
  Tag []Tag `gorm:"many2many:article_tag" json:"tag"`//多对多关系.
  //article_tag表默认article_id字段对应article表id.tag_id字段对应tag表id
  //可以把对应sql日志打印出来,便于调试
}
//文章_标签中间表
type ArticleTag struct {
   Id int `json:"id" `
  ArticleId string `json:"article_id"`
  TagId string `json:"tag_id"`
  CreatedAt string `json:"created_at"`
  UpdatedAt string `json:"updated_at"`
}
//标签表
type Tag struct {
   Id int `json:"id" `
  TagName string `json:"tag_name"`
}
//分类表
type Category struct {
   ID int `json:"id"`
  CategoryName string `json:"category_name"`
  Status int `json:"status"`
  CreatedAt time.Time `json:"created_at"`
  UpdatedAt time.Time `json:"updated_at"`
}
//远程一对多.一对一
func (a *Article) ListArticle(title string) (Article, error) {
   query := database.GormPool
  var article Article
  query.Where("title like ?", "%"+title+"%").First(&article)
   fmt.Println(article)
   err := query.Model(&article).
      Related(&article.Category).
      Related(&article.Tag, "tag").
      Find(&article).Error
  if err != nil && err != gorm.ErrRecordNotFound {
      return article, nil
  }
   return article, err
}

結果が示されている:分類を、複数のタグが
関連する方法が良い記事最初のクエリを必要とする、使用
した後、指定された、区分に従って分類文書の定義を見つけるために
タグを見つけ、ラベル直接受信したタグのセクションでは、定義され:そしてライトテーブルはGORMに対応します関係: "many2many:article_tag"
多くのクエリに多くの1、多くの1つにGORM関係1、

func (a *Article) ListArticle(title string) (articles []Article, err error) {
	query := database.GormPool
	err = query.Model(articles).
		Where("title like ?", "%"+title+"%").
		Preload("Category").
		Preload("Tag").Find(&articles).Error
	if err != nil && err != gorm.ErrRecordNotFound {
		return
	}
	return
}

見つけることができるようになり、上記のようにチェックアウトの結果として、ダイレクトモードを使用して予圧方法
多くのクエリに多くの1、多くの1つにGORM関係1、

問題があり、あなたは、マイクロ文字を追加することができます。cfun666を、語学学習交換グループに入ります

公開された43元の記事 ウォン称賛10 ビュー70000 +

おすすめ

転載: blog.csdn.net/cfun_goodmorning/article/details/103942338