pages/hi_IN/docs/conventions.md
ID as Primary KeyGORM डिफ़ॉल्ट रूप से table की primary key के रूप में ID नाम के फ़ील्ड का उपयोग करता है।
type User struct {
ID string // field named `ID` will be used as a primary field by default
Name string
}
primaryKey टैग के साथ आप अन्य फ़ील्ड को primary key के रूप में सेट कर सकते हैं
// Set field `UUID` as primary field
type Animal struct {
ID int64
UUID string `gorm:"primaryKey"`
Name string
Age int64
}
Composite Primary Key भी देखें
GORM table के नाम के रूप में snake_cases के रूप में संरचना नाम का pluralizes करता है, संरचना User के लिए, परंपरा के अनुसार इसका table नाम users है
आप Tabler इंटरफ़ेस लागू करके डिफ़ॉल्ट table नाम बदल सकते हैं, उदाहरण के लिए:
type Tabler interface {
TableName() string
}
// TableName overrides the table name used by User to `profiles`
func (User) TableName() string {
return "profiles"
}
{% note warn %}
ध्यान दें TableName dynamic नाम की अनुमति नहीं देता है, इसका परिणाम भविष्य के लिए कैश(cached) किया जाएगा, dynamic नाम का उपयोग करने के लिए, आप `Scopes </कोड>, उदाहरण के लिए:
Table विधि के साथ table का नाम Temporarily रूप से specify करें, उदाहरण के लिए:
// Create table `deleted_users` with struct User's fields
db.Table("deleted_users").AutoMigrate(&User{})
// Query data from another table
var deletedUsers []User
db.Table("deleted_users").Find(&deletedUsers)
// SELECT * FROM deleted_users;
db.Table("deleted_users").Where("name = ?", "jinzhu").Delete(&User{})
// DELETE FROM deleted_users WHERE name = 'jinzhu';
FROM clause में SubQuery का उपयोग कैसे करें, इसके लिए SubQuery से देखें
GORM allows users to change the default naming conventions by overriding the default NamingStrategy, which is used to build TableName, ColumnName, JoinTableName, RelationshipFKName, CheckerName, IndexName, Check out GORM Config for details
कॉलम db name convention द्वारा फ़ील्ड के नाम snake_case का उपयोग करता है।
type User struct {
ID uint // column name is `id`
Name string // column name is `name`
Birthday time.Time // column name is `birthday`
CreatedAt time.Time // column name is `created_at`
}
आप column टैग के साथ कॉलम नाम को ओवरराइड कर सकते हैं या NamingStrategy का उपयोग कर सकते हैं
type Animal struct {
AnimalID int64 `gorm:"column:beast_id"` // set name to `beast_id`
Birthday time.Time `gorm:"column:day_of_the_beast"` // set name to `day_of_the_beast`
Age int64 `gorm:"column:age_of_the_beast"` // set name to `age_of_the_beast`
}
CreatedAt फ़ील्ड वाले मॉडल के लिए, फ़ील्ड को वर्तमान समय पर सेट किया जाएगा जब रिकॉर्ड पहली बार बनाया जाता है यदि इसका मान शून्य है
db.Create(&user) // set `CreatedAt` to current time
user2 := User{Name: "jinzhu", CreatedAt: time.Now()}
db.Create(&user2) // user2's `CreatedAt` won't be changed
// To change its value, you could use `Update`
db.Model(&user).Update("CreatedAt", time.Now())
आप autoCreateTime टैग को false पर सेट करके टाइमस्टैम्प ट्रैकिंग disable कर सकते हैं, उदाहरण के लिए:
type User struct {
CreatedAt time.Time `gorm:"autoCreateTime:false"`
}
UpdatedAt फ़ील्ड वाले मॉडल के लिए, फ़ील्ड को वर्तमान समय पर सेट किया जाएगा जब रिकॉर्ड अपडेट किया जाता है या बनाया जाता है यदि इसका मान शून्य है
db.Save(&user) // set `UpdatedAt` to current time
db.Model(&user).Update("name", "jinzhu") // will set `UpdatedAt` to current time
db.Model(&user).UpdateColumn("name", "jinzhu") // `UpdatedAt` won't be changed
user2 := User{Name: "jinzhu", UpdatedAt: time.Now()}
db.Create(&user2) // user2's `UpdatedAt` won't be changed when creating
user3 := User{Name: "jinzhu", UpdatedAt: time.Now()}
db.Save(&user3) // user3's `UpdatedAt` will change to current time when updating
आप autoUpdateTime टैग को false पर सेट करके टाइमस्टैम्प ट्रैकिंग को disable कर सकते हैं, उदाहरण के लिए:
type User struct {
UpdatedAt time.Time `gorm:"autoUpdateTime:false"`
}
{% note %} ध्यान दें GORM multiple समय ट्रैकिंग फ़ील्��� का समर्थन करता है और UNIX (नैनो/मिली) सेकंड के साथ ट्रैक करता है, चेकआउट Models अधिक जानकारी के लिए {% endnote %}