L'éditeur PHP Xinyi vous apporte une fonctionnalité importante de gorm - les doubles crochets de la clause Where utilisant "IN" dans gorm. Cette fonctionnalité nous permet de demander plus facilement si plusieurs valeurs se trouvent dans un certain champ, simplifie l'écriture des instructions de requête et améliore la lisibilité et la maintenabilité du code. En utilisant des doubles crochets, nous pouvons passer une tranche dans la clause Where, qui contient la valeur à interroger, et gorm la convertira automatiquement en clause "IN" pour effectuer l'opération de requête. Cette fonctionnalité est très pratique dans le développement réel et nous aide à gérer plus efficacement les exigences complexes en matière de requêtes de données.
J'utilise la clause Where pour mettre à jour les valeurs dans la base de données via gorm
db.Session(&gorm.Session{FullSaveAssociations: true}).Where("id IN (?)", ids).Updates(users)
les identifiants font partie des identifiants et l'utilisateur est la structure
Le problème est que j'obtiens cette erreur
错误1241(21000):操作数应包含1列
Le SQL généré par gorm est le suivant. Il semble que cela crée une double parenthèse, provoquant cette erreur. Mais je ne sais pas comment résoudre ce problème
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'))
Modifier 1
J'ai supprimé () de (?) et cela a eu le même effet
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列
J'ai trouvé la réponse ici https://github.com/go-gorm/gorm/issues/5014 et https://gorm.io/docs/sql_builder. html#clause
En utilisant cette clause, je peux faire quelque chose comme ça
query.Clauses( clause.Where{ Exprs: []clause.Expression{ clause.Expr{ SQL: "id IN ?", Vars: []interface{}{ids}, WithoutParentheses: true, }, }, }, )
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!