diff --git a/table_and_query.go b/table_and_query.go new file mode 100644 index 00000000..8a5add28 --- /dev/null +++ b/table_and_query.go @@ -0,0 +1,27 @@ +package gorm + +import ( + "strings" + "time" +) + +// TableAndQuery returns the table name and the query already formatted as a string +func (s *DB) TableAndQuery() (string, string) { + scope := s.NewScope(s.Value) + scope.InstanceSet("skip_bindvar", true) + scope.prepareQuerySQL() + + qs := LogFormatter("sql", "q", time.Duration(1), scope.SQL, scope.SQLVars, int64(1)) + t, q := scope.TableName(), qs[3].(string) + if t == "" { + qsplit := strings.Fields(strings.ToLower(q)) + for i := range qsplit { + if qsplit[i] == "from" && i < len(qsplit)-2 { + t = qsplit[i+1] + break + } + } + } + + return t, q +}