主キーの設定 (3) 親子の関係

最終更新日: 2022年10月24日

設定方法

想定するモデル関係を図に示します。子モデルBは、モデルAの主キー値がとりうる値の範囲(定義域)と、連番(順序値)の組み合わせとします。

モデルの関係

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

用意する親子モデル

モデルA

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

モデルA (親)
モデルA (親) 主キーの設定

モデルB

親モデルAの主キー項目をモデル参照(検索)型で紐付けます。これを 「モデルAの主キー」 とします。
さらに子モデルBの順序値をもった項目 「モデルBの主キー」 を用意します。

項目名 主キー 外部キー その他
モデルA主キー 文字列(モデルA主キーと合わせる) モデルAの「モデルAの主キー」 -
モデルA主キー入力用 モデル参照(検索) マッピング設定で「モデルA主キー」と紐づける
モデルB主キー連番 文字列 順序値とする。
モデルB (子)

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

モデルA主キー(1)

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

モデルA主キー(2)

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

モデルB (子) 順序を用いた主キー

注意

主キーに複合キーを使用したとき、順序に利用できるのはいずれか一つの項目のみとなります。複数の主キー項目で順序を使う設定はできません。

「モデルA主キー入力用」 項目はモデル参照(検索)としています。モデル参照の実体は、モデルAの主キー値が格納されます。

モデルA主キー入力用 (1)

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

モデルA主キー入力用 (2)

ルックアップ項目を用意する

モデルAの主キー項目をモデル参照項目とすることで、ルックアップを使うことができます。

モデルB (子) ルックアップ項目 (1)
モデルB (子) ルックアップ項目 (2)

ルックアップの仕組み

ルックアップは、連動元項目がモデル参照項目となっている必要があります。(文字列、数値、日付といった項目を連動元項目とすることはできません。)

動作例

モデルAのデータを2件、用意した例です。

モデルAのデータを用意する

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

モデルAの詳細画面にモデルBの新規作成ボタンが用意される

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

モデルBの新規登録画面

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

モデルBの作成(1)
モデルBの作成(2)

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

モデルAの詳細画面