サポート > リポジトリ > 親子関係 > 親子関係を定義する

「顧客(customer)」と「サポート(support)」の二つのモデルを扱います。このとき「一人の顧客に対して、複数のサポート記録がある」という関係を持ちます。親が顧客(1) で、子がサポート(N)となります。

ここでは「顧客(customer)」と「サポート(support)」という2つのモデルをとりあげてみます。

顧客のデータを新規に登録します。
顧客の詳細表示画面に「サポート新規作成」ボタンが用意されています。(図1) 外部キーの関係にあるサポートモデルの新規登録は、対象データ(ここでは顧客データ)の詳細表示画面から行います。

図1 顧客詳細表示画面

「サポート新規作成」ボタンをクリックし、サポート新規登録画面を開いてみます。顧客ID(紐づく親モデルのID)は自動設定されています。

図2 サポート新規登録画面

各項目を入力して登録を行います。サポート詳細表示画面から顧客モデルへ戻るための「顧客 一覧表示」「顧客 詳細表示」ボタンが用意されています。

図3 サポート詳細表示画面

「顧客 詳細表示」ボタンをクリックして顧客詳細表示画面を開きます。顧客モデル側でもサポート記録の一覧が表示されるようになります。

図4 顧客の詳細表示画面

このように、外部キー関係にあるモデルは、画面上でも双方向のリンク関係をもちます。これによって「どの顧客についてのサポート記録だったか」を確認できるようになります。

外部キー関係では、顧客のデータが削除されたタイミングで、それに関連するサポートのデータも全て削除されます。(この動作を変更し、サポートのデータを同時に削除しない設定とすることもできます。)

今回用意したサポートモデルの定義を図6に示します。
外部キーに指定した項目の型は、参照先(親)の項目の型と同じ型で指定します。ここでは「顧客ID」を「数値」型と指定しています。

図6 サポートモデルの定義

定義のポイントは「顧客ID」が外部キーであることを指定する部分です。(図7)
「外部キー>モデル名」に、親モデルを指定します。

図7 外部キーの定義

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

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

外部キーモデルの一覧表示形式がグリッドのとき、子モデル表示もグリッドになります。

図9 子モデルのグリッド表示

グリッド表示にはいくつかの制約があります。詳細は「画面機能 > 検索・一覧表示(一覧表示)グリッド形式」をお読みください。

外部キー指定された項目は、モデル項目一覧で鎖のアイコンが表示されます。

図9 鎖アイコンが表示される

親モデルの詳細表示画面の下部に用意される子モデル一覧の表示順は、子モデル主キーの昇順となっています。 これを変更することができます。

例えば親p1に対して、子c1,c2,c3を作成したとき、標準では、子モデルの画面の表示は c1,c2,c3 です。 ここで子モデル「主キー」項目のソート順に"-1"を指定するとc3,c2,c1になります。

詳細は「モデルの定義 > ソート」をお読みください。

ソートの設定は、親子モデル画面の子モデル表示だけでなく、子モデルの一覧表示画面にも同時に反映されます。(両者は区別されません)

繰り返しコンテナ」と「外部キー」のいずれも、親モデルと子モデルの間で 1:N の関係を構築できます。両者の違いは次のとおりです。

  • 繰り返しコンテナは、親モデル内の "明細" という意味になります。親と強い従属性をもち、親が削除されると自動的に削除されます。
  • 外部キーは、親と子に何らかの関連があることを意味します。繰り返しコンテナほど強い従属性をもたず、子モデル側に対する独自の検索処理などを行うこともできます。

子モデル一覧が表示されない

「画面 > 検索・一覧表示 > 外部キー連携 > 親モデルの詳細表示画面に表示するデータ一覧」の設定が有効になっていることを確認してください。