Rumah >pembangunan bahagian belakang >Golang >Tanda kurung dua untuk klausa mana menggunakan 'IN' di gorm

Tanda kurung dua untuk klausa mana menggunakan 'IN' di gorm

WBOY
WBOYke hadapan
2024-02-10 08:12:08934semak imbas

在 gorm 处使用“IN”的 where 子句的双括号

Editor PHP Xinyi membawakan anda ciri penting gorm - kurungan berganda bagi klausa mana "IN" dalam gorm. Ciri ini membolehkan kami membuat pertanyaan dengan lebih mudah sama ada berbilang nilai berada dalam medan tertentu, memudahkan penulisan pernyataan pertanyaan dan meningkatkan kebolehbacaan dan kebolehselenggaraan kod. Dengan menggunakan kurungan berganda, kita boleh menghantar hirisan dalam klausa where, yang mengandungi nilai untuk ditanya, dan gorm akan menukarnya secara automatik menjadi klausa "IN" untuk melaksanakan operasi pertanyaan. Ciri ini sangat praktikal dalam pembangunan sebenar dan membantu kami mengendalikan keperluan pertanyaan data yang kompleks dengan lebih cekap.

Kandungan soalan

Saya menggunakan klausa where untuk mengemas kini nilai dalam pangkalan data melalui gorm

db.Session(&gorm.Session{FullSaveAssociations: true}).Where("id IN (?)", ids).Updates(users)

id adalah sebahagian daripada id dan pengguna adalah struktur

Masalahnya ialah saya mendapat ralat ini

错误1241(21000):操作数应包含1列

Sql yang dihasilkan oleh gorm ialah ini. Nampaknya ia mencipta kurungan berganda, menyebabkan ralat ini. Tapi tak tahu macam mana nak selesaikan masalah ni

UPDATE `users` SET `status`='CANCELED',`updated_at`='2023-12-12 20:39:40.904' WHERE id IN (('066a75df-ba11-49c8-9b39-b1cce029760e','5f95f93e-94a5-46d1-86eb-dde83437ea26'))

Edit 1

Saya mengeluarkan () daripada (?) dan ia mempunyai kesan yang sama

db.Session(&gorm.Session{FullSaveAssociations: true}).Where("id IN ?", ids).Updates(users)

UPDATE `users` SET `status`='CANCELED',`updated_at`='2023-12-12 21:18:46.537' WHERE id IN (('066a75df-ba11-49c8-9b39-b1cce029760e','5f95f93e-94a5-46d1-86eb-dde83437ea26'))

错误1241(21000):操作数应包含1列

Penyelesaian

Saya temui jawapannya di sini https://github.com/go-gorm/gorm/issues/5014 dan https://gorm.io/docs/sql_builder. html#klausa

Menggunakan klausa ini saya boleh melakukan sesuatu seperti ini

query.Clauses(
            clause.Where{
                Exprs: []clause.Expression{
                    clause.Expr{
                        SQL:                "id IN ?",
                        Vars:               []interface{}{ids},
                        WithoutParentheses: true,
                    },
                },
            },
        )

Atas ialah kandungan terperinci Tanda kurung dua untuk klausa mana menggunakan 'IN' di gorm. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam