


Melaksanakan perhubungan dengan tatasusunan nilai dalam Gorm
Melaksanakan perhubungan dengan tatasusunan nilai adalah ciri yang sangat berguna dalam Gorm. Gorm ialah perpustakaan ORM (Object Relational Mapping) bahasa Go yang popular yang membenarkan pembangun menggunakan bahasa Go untuk mengendalikan pangkalan data. Tidak seperti pangkalan data hubungan tradisional, tatasusunan nilai ialah struktur data khas yang membolehkan berbilang nilai disimpan secara keseluruhan dalam medan dalam pangkalan data. Ini sangat membantu untuk menyimpan beberapa struktur data yang kompleks atau meningkatkan kecekapan pertanyaan. Dalam artikel ini, saya akan memperkenalkan anda tentang cara melaksanakan perhubungan dengan tatasusunan nilai dalam Gorm dan cara menggunakannya untuk meningkatkan kecekapan pembangunan.
Kandungan soalan
Saya cuba melaksanakan model untuk aplikasi invois menggunakan go and gorm. Saya telah menentukan struktur invois dan ingin memasukkan item baris invois daripada struktur yang berasingan.
type invoice struct { base companyid string `gorm:"not null"` company company invoiceno string `gorm:"not null"` currency string `gorm:"not null;default:'gbp'"` total float64 `gorm:"not null"` terms int `gorm:"not null;default:30"` issueddate time.time `gorm:"not null"` duedate time.time `gorm:"not null"` paid bool `gorm:"not null"` lineitems []lineitem `gorm:"foreignkey:invoiceid"` void bool `gorm:"default:false"` }
Ini adalah struktur item baris saya.
type lineitem struct { base service string `gorm:"not null"` description string `gorm:"not null;"` amount float64 count int unitbase string `gorm:"not null;default:'days'"` // days or hours total float64 `gorm:"not null"` }
Apabila saya cuba membina apl, saya mendapat ralat berikut.
... got error invalid field found for struct github.com/repo/API/database/models.Invoice's field LineItems: define a valid foreign key for relations or implement the Valuer/Scanner interface
Ideanya ialah saya boleh menentukan item baris tetapan terhad yang boleh memilih daripada kadar tetap dan perihalan untuk mengehadkan pertindihan.
Saya tidak pasti sama ada saya melakukannya dengan cara yang betul.
Jadi persoalan saya ialah, adakah mungkin untuk memasukkan tatasusunan item dalam model hubungan dengan cara ini?
Penyelesaian
Berdasarkan nama lajur anda, saya boleh memikirkan tiga cara untuk mencapai ini:
Gunakan sintaks lalai (tanpa
gorm:foreignkey
)type invoice struct { id //this is the primary key, may also be in your base model lineitems []lineitem ..other fields } type lineitem struct { id //primary key of lineitem invoiceid //automatically this will be your foreign key ..other fields }
Salin selepas log masukNyatakan kunci asing tersuai (dengan andaian struct kedua mempunyai nama lajur berbeza yang anda mahu gunakan sebagai kunci asing)
type invoice struct { id //this is the primary key, may also be in your base model lineitems []lineitem `gorm:"foreignkey:parentid"` ..other fields } type lineitem struct { id //primary key of lineitem parentid //this is the custom column referencing invoice.id ..other fields }
Salin selepas log masukAtau kedua-dua struktur mempunyai nama lajur yang berbeza
type Invoice struct { ID //this is the primary key, may also be in your base model InvoiceNum Lineitems []LineItem `gorm:"foreignKey:ParentNum;references:InvoiceNum"` ..other fields } type LineItem struct { ID //primary key of LineItem ParentNum //this is now referencing Invoice.InvoiceNum ..other fields }
Salin selepas log masukAtas ialah kandungan terperinci Melaksanakan perhubungan dengan tatasusunan nilai dalam Gorm. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Artikel ini menerangkan mekanisme import pakej Go: Dinamakan import (mis., Import & quot; fmt & quot;) dan import kosong (mis., Import _ & quot; fmt & quot;). Dinamakan import membuat kandungan pakej boleh diakses, sementara import kosong hanya melaksanakan t

Artikel ini memperincikan penukaran yang cekap hasil pertanyaan MySQL ke dalam kepingan struct go. Ia menekankan menggunakan kaedah imbasan pangkalan data/SQL untuk prestasi optimum, mengelakkan parsing manual. Amalan terbaik untuk pemetaan medan struct menggunakan tag db dan robus

Artikel ini menerangkan fungsi Newflash () Beego untuk pemindahan data antara halaman dalam aplikasi web. Ia memberi tumpuan kepada menggunakan NewFlash () untuk memaparkan mesej sementara (kejayaan, kesilapan, amaran) antara pengawal, memanfaatkan mekanisme sesi. Limita

Artikel ini menunjukkan penciptaan dan stub di GO untuk ujian unit. Ia menekankan penggunaan antara muka, menyediakan contoh pelaksanaan mengejek, dan membincangkan amalan terbaik seperti menjaga mocks fokus dan menggunakan perpustakaan penegasan. Articl

Artikel ini meneroka kekangan jenis adat Go untuk generik. Ia memperincikan bagaimana antara muka menentukan keperluan jenis minimum untuk fungsi generik, meningkatkan keselamatan jenis dan kebolehgunaan semula kod. Artikel ini juga membincangkan batasan dan amalan terbaik

Artikel ini memperincikan penulisan fail yang cekap di GO, membandingkan OS.WriteFile (sesuai untuk fail kecil) dengan os.openfile dan buffered menulis (optimum untuk fail besar). Ia menekankan pengendalian ralat yang teguh, menggunakan penangguhan, dan memeriksa kesilapan tertentu.

Artikel ini membincangkan ujian unit menulis di GO, meliputi amalan terbaik, teknik mengejek, dan alat untuk pengurusan ujian yang cekap.

Artikel ini meneroka menggunakan alat pengesanan untuk menganalisis aliran pelaksanaan aplikasi GO. Ia membincangkan teknik instrumentasi manual dan automatik, membandingkan alat seperti Jaeger, Zipkin, dan OpenTelemetry, dan menonjolkan visualisasi data yang berkesan
