1
0
mirror of https://github.com/astaxie/beego.git synced 2024-06-25 06:34:13 +00:00
Beego/orm
Atallah khedrane 0e4d954fa7
Return error when wrong filtering field
When end user put wrong filtering field ORM should return error instead of Panic()
so developers can handle this error.
2018-09-23 12:18:15 +02:00
..
cmd_utils.go add field comment on create table 2018-06-06 12:33:28 +08:00
cmd.go add go simple support 2017-03-17 20:22:20 +02:00
db_alias.go Update for MySQL timezone detection bug 2017-10-26 14:32:42 +02:00
db_mysql.go Proposal to #2952 2017-11-30 18:12:49 +08:00
db_oracle.go Proposal to #2952 2017-11-30 18:12:49 +08:00
db_postgres.go Proposal to #2952 2017-11-30 18:12:49 +08:00
db_sqlite.go Proposal to #2952 2017-11-30 18:12:49 +08:00
db_tables.go add go simple support 2017-03-17 20:22:20 +02:00
db_tidb.go Orm: Support TiDB 2015-09-17 17:04:23 +08:00
db_utils.go Add strong relationship support to orm 2017-01-11 20:16:38 +02:00
db.go Return error when wrong filtering field 2018-09-23 12:18:15 +02:00
models_boot.go Merge branch 'master' into master 2017-10-17 04:30:59 -05:00
models_fields.go fix orm fields SetRaw function error judge problem 2017-12-20 14:53:00 +08:00
models_info_f.go add field comment on create table 2018-06-06 12:33:28 +08:00
models_info_m.go fix the issue #2995 2017-12-22 16:21:23 +08:00
models_test.go fix go1.10.3 orm test failed 2018-07-20 22:45:44 +08:00
models_utils.go Proposal to #2952 2017-11-30 18:12:49 +08:00
models.go misc: fix typos 2017-10-17 17:27:03 +08:00
orm_conds.go resolves #2291, introduces AndNotCond/OrNotCond to orm.Condition 2016-11-28 09:49:06 +01:00
orm_log.go support DB.BeginTx of golang 1.8 2018-07-20 16:36:06 +08:00
orm_object.go orm: fix miss pk when pk is negative 2016-03-17 21:41:35 +08:00
orm_querym2m.go add go simple support 2017-03-17 20:22:20 +02:00
orm_queryset.go send ErrNoRows if the query returns zero rows ... in method orm_queryset.All() 2018-07-19 18:51:16 +05:30
orm_raw.go 允许o.Raw(sql).QueryRows(&container) 传入的container包含结构的嵌套 2017-05-12 18:11:42 +08:00
orm_test.go Merge branch 'develop' into feature/support-begintx 2018-07-20 23:16:12 +08:00
orm.go rename orm_go18.go to orm.go 2018-07-20 16:36:06 +08:00
qb_mysql.go Add support "SELECT FOR UPDATE" to orm. Resolve issue #2157 2016-09-12 20:07:30 +00:00
qb_tidb.go Add support "SELECT FOR UPDATE" to orm. Resolve issue #2157 2016-09-12 20:07:30 +00:00
qb.go Add support "SELECT FOR UPDATE" to orm. Resolve issue #2157 2016-09-12 20:07:30 +00:00
README.md Fix the quick start section of the orm/README.md 2017-08-11 11:34:18 +08:00
types.go support DB.BeginTx of golang 1.8 2018-07-20 16:36:06 +08:00
utils_test.go Modify func camelString to be more robust 2016-12-25 21:09:06 +08:00
utils.go Merge branch 'develop' into add-gosimple 2017-03-18 11:20:30 +08:00

beego orm

Build Status

A powerful orm framework for go.

It is heavily influenced by Django ORM, SQLAlchemy.

Support Database:

Passed all test, but need more feedback.

Features:

  • full go type support
  • easy for usage, simple CRUD operation
  • auto join with relation table
  • cross DataBase compatible query
  • Raw SQL query / mapper without orm model
  • full test keep stable and strong

more features please read the docs

Install:

go get github.com/astaxie/beego/orm

Changelog

  • 2013-08-19: support table auto create
  • 2013-08-13: update test for database types
  • 2013-08-13: go type support, such as int8, uint8, byte, rune
  • 2013-08-13: date / datetime timezone support very well

Quick Start

Simple Usage

package main

import (
	"fmt"
	"github.com/astaxie/beego/orm"
	_ "github.com/go-sql-driver/mysql" // import your used driver
)

// Model Struct
type User struct {
	Id   int    `orm:"auto"`
	Name string `orm:"size(100)"`
}

func init() {
	// register model
	orm.RegisterModel(new(User))

	// set default database
	orm.RegisterDataBase("default", "mysql", "root:root@/my_db?charset=utf8", 30)
	
	// create table
	orm.RunSyncdb("default", false, true)	
}

func main() {
	o := orm.NewOrm()

	user := User{Name: "slene"}

	// insert
	id, err := o.Insert(&user)

	// update
	user.Name = "astaxie"
	num, err := o.Update(&user)

	// read one
	u := User{Id: user.Id}
	err = o.Read(&u)

	// delete
	num, err = o.Delete(&u)	
}

Next with relation

type Post struct {
	Id    int    `orm:"auto"`
	Title string `orm:"size(100)"`
	User  *User  `orm:"rel(fk)"`
}

var posts []*Post
qs := o.QueryTable("post")
num, err := qs.Filter("User__Name", "slene").All(&posts)

Use Raw sql

If you don't like ORMuse Raw SQL to query / mapping without ORM setting

var maps []Params
num, err := o.Raw("SELECT id FROM user WHERE name = ?", "slene").Values(&maps)
if num > 0 {
	fmt.Println(maps[0]["id"])
}

Transaction

o.Begin()
...
user := User{Name: "slene"}
id, err := o.Insert(&user)
if err == nil {
	o.Commit()
} else {
	o.Rollback()
}

Debug Log Queries

In development env, you can simple use

func main() {
	orm.Debug = true
...

enable log queries.

output include all queries, such as exec / prepare / transaction.

like this:

[ORM] - 2013-08-09 13:18:16 - [Queries/default] - [    db.Exec /     0.4ms] - [INSERT INTO `user` (`name`) VALUES (?)] - `slene`
...

note: not recommend use this in product env.

Docs

more details and examples in docs and test

documents