์ด ๋ฌธ์ ๊ฐ ์ฝ๋๋ ๋ฌธ์์ ์๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
๋ํ Ruby On Rails ๋๋ PHP-Laravel์ ๊ธฐ๋ฐ์ผ๋ก GORM์ ์ค๊ณํ๋ค๊ณ ๊ฐ์ ํ๊ธฐ ๋๋ฌธ์ ์ค์๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
http://laravel.com/docs/4.2/eloquent
Find()์ First()๊ฐ Laravel์์ All(), First(), Find(), Get()์ 4๊ฐ์ง ๋ช ๋ น์ ์ํํ๋๋ก ํ๊ธฐ ๋๋ฌธ์ ๋ด ์ ์์ ๋ชจ๋ ๋์ํ ๊ฒ์ผ๋ก ๊ธฐ๋ํ์ง ์์ต๋๋ค.
๊ทธ๋ฌ๋ ๋จ์ ์ ํ๋์ ๊ฒฐ๊ณผ๋ฅผ ์ํ๊ณ ์์ํ ๋ ํ๋์ ๊ตฌ์กฐ์ฒด(์ฌ๋ผ์ด์ค ์์)๋ฅผ ์ป๋ ๊ฒ์ด ๋ ํธ๋ฆฌํ๋๋ผ๋ ๋ฉ์๋๊ฐ ํญ์ ์ฌ๋ผ์ด์ค๋ฅผ ๋ฐํํ๋ค๋ ๊ฒ์ ๋๋ค.
์ ํ ๊ณ ๊ฐ ๊ตฌ์กฐ์ฒด {
ID uint32 gorm:"column:id; primary_key:yes"
Access_token ๋ฌธ์์ด gorm:"column:access_token"
}
func (c ๊ณ ๊ฐ) TableName() ๋ฌธ์์ด {
"๊ณ ๊ฐ"์ ๋ฐํ
}
func MyMiddleware(rw http.ResponseWriter, r *http.Request) {
// u := []๊ณ ๊ฐ{}
์ := ๊ณ ๊ฐ(&C){}
db, _ := gorm.Open("mysql", "root:@/main")
// db.First(&u, 5)
// db.First(&u)
// db.Find(&u, 5)
db.Find(&u)
}
์ด๊ฒ ๋ฌธ์ ์ผ:
์ฒซ ๋ฒ์งธ ๋ช
๋ น:
๋ฐํ๋๋ ๋ชจ๋ ๊ฒฐ๊ณผ ์ปฌ๋ ์
์์ ์ฒซ ๋ฒ์งธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํด์ผ ํฉ๋๋ค. (์ถ๊ฐ WHERE ๋งค๊ฐ๋ณ์๊ฐ ์๋์ง ์ฌ๋ถ).
ํ๋์ ๊ฒฐ๊ณผ๋ฅผ &Customer{}๋ก ๊ตฌ๋ฌธ ๋ถ์ํด์ผ ํ๋ฉฐ ํ๋์ ๊ฒฐ๊ณผ๊ฐ ์๋ ๋ฐฐ์ด์ด ์์ด์๋ ์ ๋ฉ๋๋ค.
ํ์ฌ &u๊ฐ ์ฌ๋ผ์ด์ค์ ๋ํ ์ฐธ์กฐ๊ฐ ์๋ ๊ฒฝ์ฐ ์๋ํ์ง ์์ต๋๋ค. &u๋ &[]Customer{}๊ฐ ์๋๋ผ &Customer{}๋ฅผ ๊ฐ๋ฆฌ์ผ์ผ ํฉ๋๋ค.
์ด ํจ์๋ ๋ํ ๊ธฐ๋ณธ ํค์ ๋ํ ์ถ๊ฐ ๋งค๊ฐ๋ณ์๋ฅผ ์ ๋ ํ์ฉํด์๋ ์ ๋ฉ๋๋ค. ์ด๊ฒ์ด ๋ฐ๋ก FIND ๊ธฐ๋ฅ์ ์ฉ๋์ ๋๋ค.
์ฐพ๊ธฐ ๋ช
๋ น:
์ฐพ๊ธฐ ๋ช
๋ น์ ๊ธฐ๋ณธ ํค๊ฐ ์ฃผ์ด์ง๋ฉด ์ฌ๋ผ์ด์ค๋ฅผ ๋ฐํํ์ง ์์์ผ ํฉ๋๋ค. ๋ํ ํญ์ ๊ธฐ๋ณธ ํค ๊ฐ์ ์์ํด์ผ ํฉ๋๋ค.
๋ชจ๋ ๊ฐ์ ์ํ๋ฉด "ALL" ๋ช ๋ น์ ์ฌ์ฉํ์ญ์์ค. db.ALL(&u) ์ฌ๊ธฐ์ &u=[]๊ณ ๊ฐ{}
http://daylerees.com/codebright/eloquent-queries
http://laravel.com/docs/4.2/queries
๋ชจ๋ ๋ช
๋ น:
์ด๊ฒ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํฌํจ๋์ด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ๋ชจ๋ ๊ฐ์ด ๋ฐํ๋ฉ๋๋ค.
db.All(&u), ์ฌ๊ธฐ์ &u=[]๊ณ ๊ฐ{}
๋ช
๋ น ๋ฐ๊ธฐ:
์ด๊ฒ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํฌํจ๋์ด์ผ ํฉ๋๋ค. WHERE ์ ์ฝ ์กฐ๊ฑด์ ์ค์ ํ ํ๋ฅผ ํฌํจํ์ฌ ๋ชจ๋ ๊ฐ์ ARRAY๋ฅผ ๋ฐํํฉ๋๋ค.
์๋ ํ์ธ์ @pjebs
ActiveRecord์์ ์์ด๋์ด๋ฅผ ํ์ณค์ง๋ง ์ ํํ ์๋ํ์ง๋ ์์ง๋ง ์๋์ ๊ฐ์ด ์๋ํฉ๋๋ค.
db.First(&User{}) // first user, sort by primary key
db.First(&[]User{}) // find the first user, and put it into the array
db.Find(&User{}) // first user
db.Find(&[]User{}) // find all users
// find records with conditions
db.First(&User{}, 123)
db.First(&User{}, "name = ?", "hello")
db.Find(&User{}, "name = ?", "hello")
db.Where("name = ?", "hello").First(&User{})
db.Where("name = ?", "hello").Find(&User{})
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์๋ ํ์ธ์ @pjebs
ActiveRecord์์ ์์ด๋์ด๋ฅผ ํ์ณค์ง๋ง ์ ํํ ์๋ํ์ง๋ ์์ง๋ง ์๋์ ๊ฐ์ด ์๋ํฉ๋๋ค.