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

WBOY
Lepaskan: 2024-02-10 08:12:08
ke hadapan
886 orang telah melayarinya

在 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'))
Salin selepas log masuk

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'))
Salin selepas log masuk

错误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,
                    },
                },
            },
        )
Salin selepas log masuk

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!

sumber:stackoverflow.com
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!