屬於
屬於
關聯設定與另一個模型的一對一連線,宣告模型的每個實例「屬於」另一個模型的一個實例。
例如,如果您的應用程式包含使用者和公司,且每個使用者可以指定到一家公司,下列類型表示該關係。請注意,在 使用者
物件中,同時有 公司 ID
和 公司
。預設情況下,公司 ID
會隱含地用於在 使用者
和 公司
表格之間建立外來金鑰關係,因此必須包含在 使用者
結構中,才能填入 公司
內部結構。
// `User` belongs to `Company`, `CompanyID` is the foreign key |
請參閱 急切載入,以取得關於填充內部結構的詳細資訊。
覆寫外來金鑰
若要定義屬於關係,外來金鑰必須存在,預設外來金鑰使用擁有者的類型名稱加上其主要欄位名稱。
對於上述範例,若要定義屬於 公司
的 使用者
模型,外來金鑰應依慣例為 公司 ID
GORM 提供自訂外來金鑰的方法,例如
type User struct { |
覆寫參考
對於屬於關係,GORM 通常使用擁有者的主要欄位作為外來金鑰的值,對於上述範例,它是 公司
的欄位 ID
。
當您將使用者指定到公司時,GORM 會將公司的 ID
儲存到使用者的 公司 ID
欄位中。
你可以使用標籤 references
來變更它,例如
type User struct { |
注意 GORM 通常會將關係猜測為
has one
,如果覆寫的外來鍵名稱已存在於擁有者的類型中,我們需要在belongs to
關係中指定references
。
type User struct { |
使用 Belongs To 進行 CRUD
請查看 關聯模式 以了解如何使用 belongs to 關係
Eager Loading
GORM 允許使用 Preload
或 Joins
eager loading 屬於關聯,請參閱 預載入 (Eager loading) 以取得詳細資訊
FOREIGN KEY 約束
你可以使用標籤 constraint
設定 OnUpdate
、OnDelete
約束,它會在使用 GORM 遷移時建立,例如
type User struct { |