{"id":19142536,"url":"https://github.com/glitterlip/goeloquent","last_synced_at":"2025-05-06T23:46:57.262Z","repository":{"id":38288939,"uuid":"421456970","full_name":"glitterlip/goeloquent","owner":"glitterlip","description":"another golang orm/querybuilder framework like Laravel Eloquent Orm","archived":false,"fork":false,"pushed_at":"2025-01-23T09:51:21.000Z","size":439,"stargazers_count":9,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-19T16:11:38.202Z","etag":null,"topics":["database","eloquent","golang","laravel","mysql","orm","sql"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/glitterlip.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-10-26T14:24:23.000Z","updated_at":"2025-01-23T09:51:25.000Z","dependencies_parsed_at":"2024-06-09T16:11:55.903Z","dependency_job_id":"ce333e97-48e0-499b-90d9-30aaa34803df","html_url":"https://github.com/glitterlip/goeloquent","commit_stats":null,"previous_names":["glitterlip/go-eloquent"],"tags_count":15,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/glitterlip%2Fgoeloquent","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/glitterlip%2Fgoeloquent/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/glitterlip%2Fgoeloquent/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/glitterlip%2Fgoeloquent/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/glitterlip","download_url":"https://codeload.github.com/glitterlip/goeloquent/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252788409,"owners_count":21804282,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["database","eloquent","golang","laravel","mysql","orm","sql"],"created_at":"2024-11-09T07:27:35.342Z","updated_at":"2025-05-06T23:46:57.246Z","avatar_url":"https://github.com/glitterlip.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Get Started\nA golang ORM Framework like Laravel's Eloquent\n```shell\ngo get github.com/glitterlip/goeloquent\n```\nExample\n\n```golang\n//define a model\ntype User struct {\n    *goeloquent.EloquentModel\n    Id        int64          `goelo:\"column:id;primaryKey\"`\n    UserName  sql.NullString `goelo:\"column:name\"`\n    Age       int            `goelo:\"column:age\"`\n    Status    int            `goelo:\"column:status\"`\n    Friends   []User        `goelo:\"BelongsToMany:FriendsRelation\"`\n    Address   Address        `goelo:\"HasOne:AddressRelation\"`\n    CreatedAt time.Time      `goelo:\"column:created_at,timestatmp:create\"`\n    UpdatedAt sql.NullTime   `goelo:\"column:updated_at,timestatmp:update\"`\n}\n\n//Find/First/Get\nvar user User\nDB.Table(\"users\").Find(\u0026user,1)\nDB.Table(\"users\").Where(\"name\",\"john\").First(\u0026user)\nDB.Table(\"users\").Where(\"name\",\"john\").FirstOrCreate(\u0026user)\n\n//Column/Aggeregate\nvar age int\nDB.Table(\"users\").Where(\"id\",\"=\",20).Value(\u0026age,\"age\")\nDB.Table(\"users\").Max(\u0026age,\"age\")\nvar salary int\nDB.Table(\"user\").Where(\"age\",\"\u003e=\",30).Avg(\u0026salary,\"salary\")\n\n//Find record to map\nvar m = make(map[string]interface{})\nDB.Query().From(\"users\").Find(\u0026m,3)\nvar ms []map[string]interface{}\nDB.Query().From(\"users\").Get(\u0026ms)\n\n//Pagination\nvar users []User\nDB.Model(\u0026User{}).Where(\"id\", \"\u003e\", 10).Where(\"id\", \"\u003c\", 28).Paginate(\u0026users, 10, 1)\n\n//Chunk/ChunkById\nvar total int\ntotalP := \u0026total\nDB.Table(\"users\").OrderBy(\"id\").Chunk(\u0026[]User{}, 10, func(dest interface{}) error {\n    us := dest.(*[]User)\n    for _, user := range *us {\n        assert.Equal(t, user.UserName, sql.NullString{\n            String: fmt.Sprintf(\"user-%d\", user.Age),\n            Valid:  true,\n        })\n        *totalP++\n    }\n    return nil\n})\n\nvar total int\ntotalP := \u0026total\nDB.Table(\"users\").ChunkById(\u0026[]User{}, 10, func(dest interface{}) error {\n    us := dest.(*[]User)\n    for _, user := range *us {\n        assert.Equal(t, user.UserName, sql.NullString{\n            String: fmt.Sprintf(\"user-%d\", user.Age),\n            Valid:  true,\n        })\n        *totalP++\n    }\n    return nil\n})\n//Query clause \nDB.Where(\"name\",\"john@apple.com\").OrWhere(\"email\",\"john@apple.com\").First(\u0026user)\n\nDB.Where(\"is_admin\", 1).Where(map[string]interface{}{\n    \"name\": \"Joe\", \"location\": \"LA\",\n}, goeloquent.BOOLEAN_OR).Where(func(builder *goeloquent.Builder){\n    builder.WhereYear(\"created_at\", \"\u003c\", 2010).WhereColumn(\"first_name\", \"last_name\").OrWhereNull(\"activited_at\")\n}).ToSql()\n// sql:\"select `name`, `age`, `email` where `is_admin` = ? or (`name` = ? and `location` = ?) and (year(`created_at`) \u003c ? and `first_name` = `last_name` or `activited_at` is null)\"\n\n// Insert/Update/Delete\nDB.Table(\"users\").Insert(map[string]interface{}{\n    \"name\":       \"go-eloquent\",\n    \"age\":        18,\n    \"created_at\": now,\n})\nDB.Table(\"users\").Where(\"id\", id).Update(map[string]interface{}{\n    \"name\":       \"newname\",\n    \"age\":        18,\n    \"updated_at\": now.Add(time.Hour * 1),\n})\nDB.Table(\"users\").Where(\"id\", id).Delete()\n\n\n//Relations (suppeort hasone/hasmany/belongsto/belongstomany/morphone/morphto/morphmany/morphbymany)\ntype Address struct {\n    *goeloquent.EloquentModel\n    ID      int64  `goelo:\"column:id;primaryKey\"`\n    User    *User `goelo:\"BelongsTo:UserRelation\"`\n    UserId  int64  `goelo:\"column:user_id\"`\n    Country string `goelo:\"column:country\"`\n    State   string `goelo:\"column:state\"`\n    City    string `goelo:\"column:city\"`\n    Detail  string `goelo:\"column:detail\"`\n}\nDB.Model(\u0026User{}).With(\"Address\").Where(\"id\", \"\u003e\", 10).Where(\"id\", \"\u003c\", 28).Paginate(\u0026users, 10, 1)\nuser.FriendsRelation().Get(\u0026friends)\n\n//WithPivot WherePivot also supported\nDB.Model(\u0026User{}).With(\"Friends\").WherePivot(\"status\", FriendStatusNormal).WithPivot(\"status\", \"user_id\", \"friend_id\", \"additional\").Find(\u0026user, u1.Id)\nvar friends []User\n```\nMore Details,visit [Docs](https://glitterlip.github.io/go-eloquent-docs/)\n# Credits\n[https://github.com/go-gorm/gorm](https://github.com/go-gorm/gorm)  \n[https://github.com/jmoiron/sqlx](https://github.com/jmoiron/sqlx)  \n[https://github.com/qclaogui/database](https://github.com/qclaogui/database)        \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fglitterlip%2Fgoeloquent","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fglitterlip%2Fgoeloquent","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fglitterlip%2Fgoeloquent/lists"}