ホームページ  >  記事  >  バックエンド開発  >  GORM は 1 対多の関係でデータを更新できません

GORM は 1 対多の関係でデータを更新できません

PHPz
PHPz転載
2024-02-10 18:00:101172ブラウズ

GORM 无法更新一对多关系中的数据

php エディター Apple は、GORM フレームワークを使用するときに、1 対多の関係にあるデータを更新できないという一般的な問題に遭遇する可能性があります。 1 対多のリレーションシップでは、通常、マスター テーブルとスレーブ テーブルが存在しますが、更新操作を実行するときに、GORM がスレーブ テーブルからのデータ更新を正しく処理できない場合があります。この問題により、データの不整合や更新の失敗が発生する可能性があります。次の記事では、開発者が GORM フレームワークをより効果的に使用できるように、この問題の解決策を詳しく説明します。

質問内容

userとdocumentという2つのテーブルがあります。これらは、各ドキュメントが 1 対多の関係を使用してユーザーに属している必要があるという方法で関連付けられています。ドキュメントを更新しようとすると、次のエラーが表示されます

リーリー

これは私の構造定義と更新関数です

error: insert or update on table "documents" violates foreign key
constraint "fk_users_documents" (sqlstate 23503)

回避策

Db.Save(&document)を呼び出していますが、documentにはNameフィールドのみが設定されています。 。これは、UserID が 0 に設定されていることを意味します。 ID 0 のユーザーは User テーブルに存在しないと思われるため、これは外部キー制約に違反します。

ドキュメントを更新するときは、UserID フィールドを常に既存のユーザーに設定する必要があります。そうしないと、クエリは失敗します。

とにかく、投稿したコードは非常にわかりにくいため、データベースと golang の基本を学ぶことをお勧めします。

以上がGORM は 1 対多の関係でデータを更新できませんの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。