一つの親に複数の子を紐づける

最終更新日: 2022年5月19日
R8 | R9

外部キーによるモデルの連携は、子を複数指定することができます。
顧客モデルを親とし、二つの子「購買履歴」「サポート」モデルを用意した例を図1,2に示します。

親モデルの詳細画面に、複数の子モデルの新規登録ボタンが用意される
子モデルを登録すると(親モデルの詳細画面に)表示される

親モデルにおける表示順

モデルID (英語) の辞書順に並びます。

定義方法

  1. 今回用意した購買履歴モデルの定義は次の通りです。
    外部キーに指定した項目の型は、参照先の項目の型と同じ型で指定します。ここでは「顧客ID」を「数値」型と指定しています。
    購買履歴モデルの定義
  2. サポートモデルの定義は次の通りです。
    サポートモデルの定義
  3. サポートモデルの「顧客ID」項目には、外部キーの設定を行います。
    「外部キー>モデル名」に、親モデルを指定します。
    外部キーの定義

    「参照先項目名」は、子モデル側の項目IDが同じ値の場合、省略できます。(今回は同じ「customerid」としたため、省略することができます。)

    外部キーの定義(参照先項目名を省略したとき)

子モデル表示レイアウトの変更(タブ表示と一覧表示)

親モデル詳細画面の子モデルは、標準ではタブに格納されます。(図1,図2)
子モデルをタブではなく、下図のように縦に並べて表示させることもできます。

複数の子モデルを縦に並べて表示させる

定義方法

子モデルの画面定義を修正します。

「画面 > 検索・一覧表示 > 外部キー連携 > 表示方式 > タブレイアウト」のチェックをはずします。標準では、チェックされています。

タブレイアウトを使わない(購買履歴)
タブレイアウトを使わない(サポート)

注意

今回の例のように複数の子モデルをもたせる場合、タブレイアウトの設定は統一することをおすすめします。
(それぞれ異なる設定にすることは可能です)

子モデル表示の並び

一つの親モデルに複数の子モデルが紐づく場合、表示順序は「子モデルのモデルIDの昇順」となります。
下図は購買履歴(purchaselogs)と、サポート(support)というモデルIDの例です。

子モデルpurchaselogsとsupportの辞書順に並ぶ

この順序を変更することができます。

子モデルの並び順を変更した例

タブレイアウトを利用しない場合も、この表示順序が適用されます。

タブレイアウトを利用しない場合

定義方法

「画面 > 検索・一覧表示 > 外部キー連携」の「タブの表示位置」を次の書式で指定します。

親モデルID:位置番号

一つの子に複数の親を紐づける設定を行なった場合、次のようにコンマで区切って指定することができます。

親モデルID:位置番号,親モデルID:位置番号,...

位置番号は「1」から数えます。

子モデル「サポート」の表示位置を1とする
子モデル「購入履歴」の表示位置を2とする
この設定を行う場合は、すべての子モデルについて指定してください。未設定の子モデルが含まれていた場合、未設定が最初に位置づけられます。
位置番号が重複した場合は、最初のルールであるモデルIDの辞書順が適用されます。