PHP 開発では、データベース操作は避けられない部分です。データベース操作フレームワークGORMは、その柔軟性と強力な機能が常に開発者に支持されています。多対多の関係の処理に関して、GORM は列構成をカスタマイズする機能を提供し、開発者がデータ テーブル間の関係をより正確に制御できるようにします。この記事では、GORMのカスタムカラム設定機能を使って多対多のリレーションシップを扱う方法をPHPエディタXiguaが詳しく紹介しますので、お役に立てれば幸いです。
私は次の 2 つのモデルを持っています:
リーリー私はすでに residue_residue_categories
テーブルを持っています。ただし、これらの列は次のとおりです:
追加の関連付けを作成したいと考えています。例:
リーリーただし、生成される SQL は次のとおりです:
リーリーご覧のとおり、挿入された SQL の列名は正しくありません。
次のような他のフィールドを構成しようとしました:
リーリー リーリーしかし奇妙なことに、gorm は単純な getbyid
: 無効な外部キー: Residualid
(リレーションシップを追加する前に) をスローします。これらのカスタム列名との関係を構成するにはどうすればよいですか?
あなたの問題を解決するための小さな例をまとめました。まずコードを共有してから、コードの関連部分をすべて説明します。
リーリーそれでは、各部分を詳しく見ていきましょう。
構造の定義は大きく変わりました。結合テーブルの定義を挿入し、その列名を上書きする必要があります。
完全を期すためだけに定義を追加していることに注意してください。結合テーブルがデータベースにすでに存在する場合は無視してください。
もう 1 つの変更は、データベースにデータを挿入する方法です。まず、親テーブル (residues
および residue_categories
) にデータを挿入する必要があります。その後、residue_residue_categories
結合テーブルに関連付けを追加できます。
デバッガーを接続せずにコードを実行した場合でも、データベースに送信された SQL ステートメントを表示するために debug()
メソッドを追加しました。
ロジックに焦点を絞るために、プログラムにいくつかの値をハードコーディングしましたが、独自のロジックに合わせて調整するのは簡単です。
これで問題が解決したかどうかお知らせください。ありがとうございます。
以上がGORM はカスタム列を使用して多対多を構成しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。