1 回答

TA貢獻(xiàn)2051條經(jīng)驗(yàn) 獲得超10個(gè)贊
我不確定你為什么為此使用 Raw 方法,但我想指出有一個(gè) Count 方法可以實(shí)現(xiàn)你想要的:
db.Where("name = ?", "jinzhu").Or("name = ?", "jinzhu 2").Find(&users).Count(&count)
//// SELECT * from USERS WHERE name = 'jinzhu' OR name = 'jinzhu 2'; (users)
//// SELECT count(*) FROM users WHERE name = 'jinzhu' OR name = 'jinzhu 2'; (count)
db.Model(&User{}).Where("name = ?", "jinzhu").Count(&count)
//// SELECT count(*) FROM users WHERE name = 'jinzhu'; (count)
我從文檔中整理了一個(gè)非常簡(jiǎn)單的示例:
package main
import (
? ? "fmt"
? ? "github.com/jinzhu/gorm"
? ? _ "github.com/jinzhu/gorm/dialects/sqlite"
)
type Porg struct {
? ? gorm.Model
? ? Name string
}
func main() {
? ? db, err := gorm.Open("sqlite3", "test.db")
? ? if err != nil {
? ? ? ? panic("failed to connect database")
? ? }
? ? defer db.Close()
? ? // Migrate the schema
? ? db.AutoMigrate(&Porg{})
? ? // Create
? ? for i := 1; i <= 100; i++ {
? ? ? ? db.Create(&Porg{Name: "John"})
? ? }
? ? // Read
? ? var porgs []Porg
? ? var count int
? ? db.Model(&porgs).Count(&count)
? ? fmt.Println(count)
}
輸出:100
使用Model您可以指定要查詢的模型的方法,這不會(huì)直接查詢數(shù)據(jù)庫(kù)。使用db.Find(&porgs).Count(&count)實(shí)際上會(huì)向數(shù)據(jù)庫(kù)發(fā)送 2 個(gè) SQL 查詢。
- 1 回答
- 0 關(guān)注
- 156 瀏覽
添加回答
舉報(bào)