Support specify GORM tag setting inside scanner
This commit is contained in:
		
							parent
							
								
									35a2a004d8
								
							
						
					
					
						commit
						f26fa242cc
					
				@ -117,7 +117,7 @@ type Company struct {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type Role struct {
 | 
					type Role struct {
 | 
				
			||||||
	Name string
 | 
						Name string `gorm:"size:256"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (role *Role) Scan(value interface{}) error {
 | 
					func (role *Role) Scan(value interface{}) error {
 | 
				
			||||||
 | 
				
			|||||||
@ -188,6 +188,13 @@ func (scope *Scope) GetModelStruct() *ModelStruct {
 | 
				
			|||||||
				if _, isScanner := fieldValue.(sql.Scanner); isScanner {
 | 
									if _, isScanner := fieldValue.(sql.Scanner); isScanner {
 | 
				
			||||||
					// is scanner
 | 
										// is scanner
 | 
				
			||||||
					field.IsScanner, field.IsNormal = true, true
 | 
										field.IsScanner, field.IsNormal = true, true
 | 
				
			||||||
 | 
										if indirectType.Kind() == reflect.Struct {
 | 
				
			||||||
 | 
											for i := 0; i < indirectType.NumField(); i++ {
 | 
				
			||||||
 | 
												for key, value := range parseTagSetting(indirectType.Field(i).Tag) {
 | 
				
			||||||
 | 
													field.TagSettings[key] = value
 | 
				
			||||||
 | 
												}
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
				} else if _, isTime := fieldValue.(*time.Time); isTime {
 | 
									} else if _, isTime := fieldValue.(*time.Time); isTime {
 | 
				
			||||||
					// is time
 | 
										// is time
 | 
				
			||||||
					field.IsNormal = true
 | 
										field.IsNormal = true
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user