ホームページ  >  記事  >  バックエンド開発  >  GORM はカスタム列を使用して多対多を構成します

GORM はカスタム列を使用して多対多を構成します

WBOY
WBOY転載
2024-02-13 11:20:09500ブラウズ

GORM 使用自定义列配置多对多

PHP 開発では、データベース操作は避けられない部分です。データベース操作フレームワークGORMは、その柔軟性と強力な機能が常に開発者に支持されています。多対多の関係の処理に関して、GORM は列構成をカスタマイズする機能を提供し、開発者がデータ テーブル間の関係をより正確に制御できるようにします。この記事では、GORMのカスタムカラム設定機能を使って多対多のリレーションシップを扱う方法をPHPエディタXiguaが詳しく紹介しますので、お役に立てれば幸いです。

質問内容

私は次の 2 つのモデルを持っています:

リーリー

私はすでに residue_residue_categories テーブルを持っています。ただし、これらの列は次のとおりです:

  • id ​​(整数)
  • residueid(int, 外部キー)
  • residuecategoryid(int, 外部キー)

追加の関連付けを作成したいと考えています。例:

リーリー

ただし、生成される SQL は次のとおりです:

リーリー

ご覧のとおり、挿入された SQL の列名は正しくありません。

次のような他のフィールドを構成しようとしました:

リーリー リーリー

しかし奇妙なことに、gorm は単純な getbyid: 無効な外部キー: Residualid (リレーションシップを追加する前に) をスローします。これらのカスタム列名との関係を構成するにはどうすればよいですか?

解決策

あなたの問題を解決するための小さな例をまとめました。まずコードを共有してから、コードの関連部分をすべて説明します。

リーリー

それでは、各部分を詳しく見ていきましょう。
構造の定義は大きく変わりました。結合テーブルの定義を挿入し、その列名を上書きする必要があります。

完全を期すためだけに定義を追加していることに注意してください。結合テーブルがデータベースにすでに存在する場合は無視してください。

もう 1 つの変更は、データベースにデータを挿入する方法です。まず、親テーブル (residues および residue_categories) にデータを挿入する必要があります。その後、residue_residue_categories 結合テーブルに関連付けを追加できます。
デバッガーを接続せずにコードを実行した場合でも、データベースに送信された SQL ステートメントを表示するために debug() メソッドを追加しました。

ロジックに焦点を絞るために、プログラムにいくつかの値をハードコーディングしましたが、独自のロジックに合わせて調整するのは簡単です。
これで問題が解決したかどうかお知らせください。ありがとうございます。

以上がGORM はカスタム列を使用して多対多を構成しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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