1 回答

TA貢獻2051條經驗 獲得超10個贊
我不確定你為什么為此使用 Raw 方法,但我想指出有一個 Count 方法可以實現你想要的:
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)
我從文檔中整理了一個非常簡單的示例:
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您可以指定要查詢的模型的方法,這不會直接查詢數據庫。使用db.Find(&porgs).Count(&count)實際上會向數據庫發送 2 個 SQL 查詢。
- 1 回答
- 0 關注
- 146 瀏覽
添加回答
舉報