主キーの設定 (3) 親子の関係
最終更新日: 2023年7月12日
設定方法
想定するモデル関係を図に示します。子モデルBは、モデルAの主キー値がとりうる値の範囲(定義域)と、連番(順序値)の組み合わせとします。

用意するモデルは二つです。

モデルA
主キーに順序を使うとしています。


モデルB
親モデルAの主キー項目をモデル参照(検索)型で紐付けます。これを 「モデルAの主キー」 とします。
さらに子モデルBの順序値をもった項目 「モデルBの主キー」 を用意します。
項目名 | 型 | 主キー | 外部キー | その他 |
---|---|---|---|---|
モデルA主キー | 文字列(モデルA主キーと合わせる) | ○ | モデルAの「モデルAの主キー」 | - |
モデルA主キー入力用 | モデル参照(検索) | マッピング設定で「モデルA主キー」と紐づける | ||
モデルB主キー連番 | 文字列 | ○ | 順序値とする。 |

「モデルA主キー」項目は外部キーの設定も同時に行います。これによってモデルBの新規作成時、モデルAの主キー値を引き継ぐ動作を実現します。

この項目は入力時、隠し項目とします。入力は「モデルA主キー入力用」項目が行うためです。

「モデルBの主キー」 項目も主キーとします。これで 「モデルAの主キー」, 「モデルBの主キー」 の組み合わせによる複合主キーとなります。

注意
主キーに複合キーを使用したとき、順序に利用できるのはいずれか一つの項目のみとなります。複数の主キー項目で順序を使う設定はできません。
「モデルA主キー入力用」 項目はモデル参照(検索)としています。モデル参照の実体は、モデルAの主キー値が格納されます。

「自モデル内項目へのマッピング」で主キー項目と紐付けます。これによって、この項目への入出力はすべてマッピングされた項目に対する操作に変わります。


参照連動項目を用意する
モデルAの主キー項目をモデル参照項目とすることで、参照連動を使うことができます。


参照連動の仕組み
参照連動は、連動元項目がモデル参照項目となっている必要があります。(文字列、数値、日付といった項目を連動元項目とすることはできません。)
動作例
モデルAのデータを2件、用意した例です。

Wagbyでは外部キーの設定をすることで、親モデルの詳細画面に、子モデルの新規登録ボタンが自動的に用意されます。

モデルBの新規登録画面には、親であるモデルAの主キーが自動的にセットされます。参照連動も同時に機能します。

モデルBに関するデータを入力し、作成します。「モデルBの主キー」項目(順序値)が設定されていることがわかります。


モデルAの詳細画面には、自身に紐づく子モデル(モデルB)の一覧が表示されます。ここで赤枠の値はすべて同じ「モデルAの主キー」の値を指しています。

検索条件設定時の注意点
「モデルA主キー入力用」項目を検索条件とするとき、マッピング先である「モデルA主キー」も必ず検索条件としてください。

さらに、今回のように検索項目「モデルA主キー入力用」は範囲検索ではない場合、マッピング先の項目も範囲検索設定を解除します。
また、マッピング先項目は、検索画面で隠し項目とします。
