Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk mendapatkan nama lajur dan nilai dari objek Gorm?
php Editor Strawberi Dalam pembangunan pengaturcaraan, kami sering menggunakan objek Gorm untuk operasi pangkalan data. Kadangkala, kita perlu mendapatkan nama lajur dan nilai yang sepadan daripada objek Gorm. Jadi, bagaimana untuk mencapai keperluan ini? Di Gorm, kita boleh mendapatkan sifat dan nilai objek melalui refleksi, dan menggabungkannya dengan label Gorm untuk mendapatkan nama lajur. Seterusnya, saya akan memperkenalkan secara terperinci cara mendapatkan nama lajur dan nilai dari objek Gorm. Mari lihat!
Saya ingin menulis fungsi yang boleh mengambil sebarang objek yang dimuatkan daripada pangkalan data (melalui gorm) dan mencetak semua nama dan nilai lajur. Jelas sekali bahagian penting ialah keupayaan untuk menghantar mana-mana model Gorm saya ke dalam fungsi ini. Saya tidak menunjukkan ini di bawah kerana semuanya mudah.
Apa yang saya ada setakat ini ialah fungsi dengan antara muka, dan beberapa kod ujian yang memanggilnya:
func testfunc(s interface{}) { // type v := reflect.TypeOf(s) fmt.Println(v) // fields? for i := 0; i < v.NumField(); i++ { fmt.Println(i) } }
trans := make([]orm.Trans, 0) db.Where("state = ?", state.FINISHED).Limit(1).Find(&trans) testfunc(trans)
Apabila dijalankan, jenis dicetak dan kemudian panik:
[]orm.Trans panic: reflect: call of reflect.Value.NumField on slice Value
Saya orang baru, jadi idea anda dialu-alukan. Nampaknya pilihan saya yang mungkin ialah:
Terima kasih.
Cuba kaedah ini:
func testfunc(x interface{}){ v := reflect.ValueOf(x) s := reflect.TypeOf(x) names:=make([]interface{},v.NumField()) values := make([]interface{}, v.NumField()) for i := 0; i < v.NumField(); i++ { values[i] = v.Field(i).Interface() names[i] = s.Field(i).Name } fmt.Println("Names",names) fmt.Println("values",values) }
1- Anda melepasi sekeping struct. (Jika menggunakan kepingan, elakkan memanggil fungsi di atas dalam gelung.)
2- Saya menghantar struktur ini kepada fungsi di atas
x := struct { Name string Id int }{"Zargham", 2}
3-Dapatkan output:-
Names [Name Id] values [Zargham 2]
Atas ialah kandungan terperinci Bagaimana untuk mendapatkan nama lajur dan nilai dari objek Gorm?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!