合并join
This commit is contained in:
		@@ -695,17 +695,6 @@ func NewSchema(config Config) (graphql.Schema, error) {
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				// 数据库中筛选:按文章标签
 | 
			
		||||
				if p.Args["article_tags"] != nil {
 | 
			
		||||
					tags := strings.Split(strings.ReplaceAll(p.Args["article_tags"].(string), " ", ""), ", ")
 | 
			
		||||
					for _, tag := range tags {
 | 
			
		||||
						query = query.Join(goqu.T("web_article"), goqu.On(
 | 
			
		||||
							goqu.I("web_images.article_id").Eq(goqu.I("web_article.id")),
 | 
			
		||||
							goqu.L("MATCH(web_article.tags) AGAINST (? IN NATURAL LANGUAGE MODE)", tag),
 | 
			
		||||
						))
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				// 数据库中筛选:喜欢的截图
 | 
			
		||||
				if p.Args["praise"] != nil {
 | 
			
		||||
					query = query.Join(goqu.T("web_praise"), goqu.On(
 | 
			
		||||
@@ -739,45 +728,46 @@ func NewSchema(config Config) (graphql.Schema, error) {
 | 
			
		||||
					))
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				var conditions []goqu.Expression = []goqu.Expression{
 | 
			
		||||
					goqu.I("web_images.article_id").Eq(goqu.I("web_article.id")),
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				// 按游戏标签筛选图像
 | 
			
		||||
				if p.Args["article_tags"] != nil {
 | 
			
		||||
					tags := strings.Split(strings.ReplaceAll(p.Args["article_tags"].(string), " ", ""), ", ")
 | 
			
		||||
					for _, tag := range tags {
 | 
			
		||||
						conditions = append(conditions, goqu.L("MATCH(web_article.tags) AGAINST (? IN NATURAL LANGUAGE MODE)", tag))
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				// 按游戏风格筛选图像
 | 
			
		||||
				if p.Args["style"] != nil {
 | 
			
		||||
					query = query.Join(goqu.T("web_article"), goqu.On(
 | 
			
		||||
						goqu.I("web_images.article_id").Eq(goqu.I("web_article.id")),
 | 
			
		||||
						goqu.I("web_article.style").Eq(p.Args["style"]),
 | 
			
		||||
					))
 | 
			
		||||
					conditions = append(conditions, goqu.I("web_article.style").Eq(p.Args["style"]))
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				// 按游戏平台筛选图像
 | 
			
		||||
				if p.Args["device"] != nil {
 | 
			
		||||
					query = query.Join(goqu.T("web_article"), goqu.On(
 | 
			
		||||
						goqu.I("web_images.article_id").Eq(goqu.I("web_article.id")),
 | 
			
		||||
						goqu.I("web_article.device").Eq(p.Args["device"]),
 | 
			
		||||
					))
 | 
			
		||||
					conditions = append(conditions, goqu.I("web_article.device").Eq(p.Args["device"]))
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				// 按游戏版式筛选图像
 | 
			
		||||
				if p.Args["orientation"] != nil {
 | 
			
		||||
					query = query.Join(goqu.T("web_article"), goqu.On(
 | 
			
		||||
						goqu.I("web_images.article_id").Eq(goqu.I("web_article.id")),
 | 
			
		||||
						goqu.I("web_article.orientation").Eq(p.Args["orientation"]),
 | 
			
		||||
					))
 | 
			
		||||
					conditions = append(conditions, goqu.I("web_article.orientation").Eq(p.Args["orientation"]))
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				// 按游戏年份筛选图像
 | 
			
		||||
				if p.Args["era"] != nil {
 | 
			
		||||
					query = query.Join(goqu.T("web_article"), goqu.On(
 | 
			
		||||
						goqu.I("web_images.article_id").Eq(goqu.I("web_article.id")),
 | 
			
		||||
						goqu.I("web_article.era").Eq(p.Args["era"]),
 | 
			
		||||
					))
 | 
			
		||||
					conditions = append(conditions, goqu.I("web_article.era").Eq(p.Args["era"]))
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				// 按游戏类型筛选图像(逗号分割且去除空格)
 | 
			
		||||
				if p.Args["category_id"] != nil {
 | 
			
		||||
					category_ids := strings.Split(strings.ReplaceAll(p.Args["category_id"].(string), " ", ""), ",")
 | 
			
		||||
					query = query.Join(goqu.T("web_article_category"), goqu.On(
 | 
			
		||||
						goqu.I("web_images.article_id").Eq(goqu.I("web_article_category.article_id")),
 | 
			
		||||
						goqu.I("web_article_category.category_id").In(category_ids),
 | 
			
		||||
					))
 | 
			
		||||
					conditions = append(conditions, goqu.I("web_article.category_id").In(category_ids))
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				if len(conditions) > 1 {
 | 
			
		||||
					query = query.Join(goqu.T("web_article"), goqu.On(conditions...))
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				// 数据库中筛选:按关注列表
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user