انواع ارتباطات یا relation در زبان برنامه نویسی گو(Go)با استفاده از پکیج Gorm

8/7/2022 MVC
397

Relations  بین جدول های بانک اطلاعتی در برنامه های سی شارپ با استفاده ازentityframework  مدیریت میشوند اما در Go با استفاده از Gorm ما میخوایم مشخص کنیم که به چه صورت میتوانیم انواع ارتباطات بین جدول ها رو داشته باشیم .

 

انواع ارتباطات شاملOne to One وone to many  و many to many خواهد بود.

مبحث one to one زمانی نیاز خواهد بودکه شما به طور مثال 

 ما دوتا جدول داریم جدول کاربر :

ype User struct {
	gorm.Model
	UserId               VID       `json:"user_id,omitempty"`
	UserName             string    `json:"user_name,omitempty"`
	PasswordHash         string    `json:"password,omitempty"`
	Email                string    `json:"email,omitempty"`
}

 و جدول تقویم:

type Calendar struct {
	gorm.Model
}

وقتی که ارتباطone to one رو برای این دو جدول در نظر میگیریم یعنی هر کاربر یک تقویم در جدول تقویم ها خواهد داشت و هر تقویم یک کاربر به خود اتصاص خواهد داد

به این نوع ارتباط one to one گفته میشود

 ارتباط one to one  به دو نوع وجود داره که از طریق gorm می توانیم می توانیم مدیریت کنیم اول اولین نوع ان Has-one است به این معنی که هر کاربر یک آیدی در جدول تقویم خواهد داشت و با پاک کردن کاربر تقویم نیز پاک خواهد شد اما با پاک کردن تقویم کاربر حذف نخواهد شد.

ype User struct {
	gorm.Model
	UserId               VID       `json:"user_id,omitempty"`
	UserName             string    `json:"user_name,omitempty"`
	PasswordHash         string    `json:"password,omitempty"`
	Email                string    `json:"email,omitempty"`

	Calendar             Calendar    `json:"calendar,omitempty"`
}

و در جدول تقویم

type Calendar struct {
	gorm.Model

	UserId    uint
}

 

نوع دوم belongs to است :  در این نوع،  در صورتی که کاربر پاک شود تقویم پاک نخواهد شد و در صورتی تقویم رو از جدول تقویمها پاک کنیم کاربر پاک خواهد شد این دو نوع ارتباط در Gorm به صورتone to one معرفی می شود

ype User struct {
	gorm.Model
	UserId               VID       `json:"user_id,omitempty"`
	UserName             string    `json:"user_name,omitempty"`
	PasswordHash         string    `json:"password,omitempty"`
	Email                string    `json:"email,omitempty"`

	Calendar             string    `json:"calendar,omitempty"`
	CalendarID           string    `json:"calendar_id,omitempty"`
}

و در جدول تقویم

type Calendar struct {
	gorm.Model

}