Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mendapatkan Jumlah Nilai Lajur Menggunakan GORM dan Imbas?

Bagaimana untuk Mendapatkan Jumlah Nilai Lajur Menggunakan GORM dan Imbas?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-23 23:08:30871semak imbas

How to Retrieve the Sum of a Column Value Using GORM and Scan?

Mendapatkan Jumlah Lajur Gaji menggunakan GORM

Dalam kod anda, anda cuba untuk mendapatkan jumlah lajur gaji daripada jadual Postgres bernama "orang" menggunakan GORM. Walau bagaimanapun, pendekatan semasa anda mempunyai beberapa had.

Untuk mendapatkan semula jumlah lajur gaji dengan betul, adalah disyorkan untuk menggunakan fungsi Imbas GORM dan bukannya membina pertanyaan SQL secara manual. Pendekatan ini membolehkan anda mentakrifkan struct yang mewakili hasil yang anda mahu dapatkan semula.

Contoh:

<code class="go">func GetSalarySum(c echo.Context) error {
    db, err := gorm.Open("postgres", "host=localhost port=5433 user=postgres dbname=testone password=root sslmode=disable")
    checkError(err)
    defer db.Close()

    type SalarySum struct {
        Sum uint `gorm:"column:sum"`
    }

    var salarySum SalarySum
    if err := db.Table("people").Select("SUM(salary) AS sum").Scan(&salarySum).Error; err != nil {
        fmt.Println("error->", err)
    }

    return c.JSON(http.StatusOK, salarySum)
}</code>

Dalam kod ini:

  • Struktur SalarySum mentakrifkan hasil jangkaan pertanyaan. Ia mengandungi satu medan "Jumlah" jenis uint.
  • Db.Table("orang").Select("SUM(gaji) AS sum") baris memilih jumlah lajur gaji dan menyamakannya sebagai "jumlah" dalam keputusan.
  • Bahagian Scan(&GajiSum) mengimbas keputusan ke dalam struktur GajiSum.

Kod yang dikemas kini ini sepatutnya mengambil dan mengembalikan jumlah gaji dengan betul lajur daripada jadual "orang".

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Jumlah Nilai Lajur Menggunakan GORM dan Imbas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn