PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

गोर्म में संरचना में नेस्टेड वस्तु प्राप्त करें

ऐसा लगता है कि आपके पास जो कुछ है उसके साथ आप दो काम करना चाहेंगे:(1) मॉडल को अपडेट करें ताकि आपके पास सही संबंध बाध्यकारी हो, और (2) .Preload() का उपयोग करें। विधि यदि आप डेटा को पढ़ने पर संबद्ध करने के लिए इसे प्राप्त करने का प्रयास कर रहे हैं।

मॉडल परिवर्तन

गोर्म स्वचालित रूप से आपकी संरचना में विशेषताओं के नाम और संदर्भित संरचना के नाम के आधार पर संबंधों का अनुमान लगाता है। समस्या यह है कि Google GoogleAccount . प्रकार की विशेषता संबद्ध नहीं है क्योंकि गोर्म एक type Google struct की तलाश में है ।

आपके पास GoogleAccount . पर एक विदेशी कुंजी भी नहीं है . ORM को कैसे पता चलेगा कि कौन सा GoogleAccount किस Client . के साथ संबद्ध करने के लिए ? आपको एक ClientId जोड़ना चाहिए आपके GoogleAccount . पर संरचना परिभाषा।

साथ ही, मैं uint . टाइप करने के लिए आपके द्वारा उपयोग की जा रही प्राथमिक कुंजियों को बदल दूंगा चूंकि यह वही है जो गॉर्म डिफॉल्ट करता है (जब तक कि आपके पास इसका उपयोग न करने का कोई अच्छा कारण न हो)

अगर मैं तुम होते, तो मैं अपनी संरचना परिभाषाओं को निम्नलिखित में बदल देता:

type Client struct {
     IdClient       uint            `gorm:"primary_key"`
     Name           string
     PhotoUrl       string
     ApprovalNumber uint16
     Phone          string
     Password       string
     HoursOfNotice  int8
     GoogleAccount  GoogleAccount    // Change this to `GoogleAccount`, the same name of your struct
}

type GoogleAccount struct {
     Id             uint
     ClientId       uint             // Foreign key
     Token          string
}

इस बारे में अधिक जानकारी के लिए, एसोसिएशन के दस्तावेज़ यहाँ देखें:http://gorm। io/associations.html#has-one

संबद्धों को प्रीलोड करना

अब जब आप वास्तव में उन्हें ठीक से संबंधित कर चुके हैं, तो आप .Preload() . कर सकते हैं वांछित वस्तु प्राप्त करें:

db.Preload("GoogleAccount").First(&user)

.Preload() user.GoogleAccount . को पॉप्युलेट करेगा सही ढंग से संबद्ध GoogleAccount . के साथ विशेषता ClientId . के आधार पर ।

इसके बारे में अधिक जानकारी के लिए, प्रीलोडिंग दस्तावेज़ देखें:http://gorm .io/crud.html#preloading-eager-loading



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgresql से Solr6 तक स्टॉपवर्ड लोड हो रहा है

  2. डोकर कंपोज़ द्वारा शुरू करते समय टेबल पोस्टग्रेस्क्ल कैसे बनाएं?

  3. PostgreSQL टाइमस्टैम्प्टज़ प्रकार में समय क्षेत्र को सुरक्षित रखें

  4. psql:FATAL:पासवर्ड प्रमाणीकरण उपयोगकर्ता के लिए विफल रहा

  5. मैं numpy NaN ऑब्जेक्ट्स को SQL नल में कैसे परिवर्तित करूं?