code: func (m *manyToManyAssociation) Constraint() (string, []interface{}) {
  	modelColumnID := defaults.String(m.primaryID, fmt.Sprintf("%s%s", flect.Underscore(m.model.Type().Name()), "_id"))
  
  	var columnFieldID string
  	i := reflect.Indirect(m.fieldValue)
  	t := i.Type()
  	if i.Kind() == reflect.Slice || i.Kind() == reflect.Array {
  		t = t.Elem()
  	}
  	if t.Kind() == reflect.Ptr {
  		t = t.Elem()
  	}
  	columnFieldID = defaults.String(m.fkID, fmt.Sprintf("%s%s", flect.Underscore(t.Name()), "_id"))
  
  	subQuery := fmt.Sprintf("select %s from %s where %s = ?", columnFieldID, m.manyToManyTableName, modelColumnID)
  	modelIDValue := m.model.FieldByName("ID").Interface()
  
  	return fmt.Sprintf("id in (%s)", subQuery), []interface{}{modelIDValue}
  }
docs: // Constraint returns the content for a where clause, and the args
  // needed to execute it.