Group/Order Grouping and Sorting

The Group method is used for query grouping, and the Order method is used for query sorting. Example usage:

  1. // SELECT COUNT(*) total, age FROM `user` GROUP BY age
  2. g.Model("user").Fields("COUNT(*) total,age").Group("age").All()
  3. // SELECT * FROM `student` ORDER BY class asc, course asc, score desc
  4. g.Model("student").Order("class asc,course asc,score desc").All()

At the same time, goframe’s ORM offers some common sorting methods:

  1. // Sort in ascending order according to a specified field
  2. func (m *Model) OrderAsc(column string) *Model
  3. // Sort in descending order according to a specified field
  4. func (m *Model) OrderDesc(column string) *Model
  5. // Random sorting
  6. func (m *Model) OrderRandom() *Model

Example usage:

  1. // SELECT `id`,`title` FROM `article` ORDER BY `created_at` ASC
  2. g.Model("article").Fields("id,title").OrderAsc("created_at").All()
  3. // SELECT `id`,`title` FROM `article` ORDER BY `views` DESC
  4. g.Model("article").Fields("id,title").OrderDesc("views").All()
  5. // SELECT `id`,`title` FROM `article` ORDER BY RAND()
  6. g.Model("article").Fields("id,title").OrderRandom().All()

Having Condition Filtering

The Having method is used for condition filtering of query results. Example usage:

  1. // SELECT COUNT(*) total, age FROM `user` GROUP BY age HAVING total>100
  2. g.Model("user").Fields("COUNT(*) total,age").Group("age").Having("total>100").All()
  3. // SELECT * FROM `student` ORDER BY class HAVING score>60
  4. g.Model("student").Order("class").Having("score>?", 60).All()