Wagbyの「親子関係」の定義方法を説明します。

Wagbyではモデルに親子の関係性を設定することができます。

ここで主となるモデルを「親」、親に従属するモデルを「子」と表現すると、親と子には次のような関係が成立します。

  • 親モデルと子モデルは互いに参照できるようになっている。
  • 一つの親モデルに対して、複数の子モデルを紐付けることができる。
  • 一つの子モデルに対して、複数の親モデルを紐づけることができる。
  • 子モデルを独立して扱える。具体的には子モデルについての検索や一覧表示の処理を行なうことができる。
  • 親モデルが削除された場合、子モデルも同時に削除することもできる。(あえて残すこともできる。)

本チュートリアルでは、親子関係を設定する方法を学びます。

顧客モデルを親とし、これに従属する子モデルである「サポート」モデルを用意します。 サポートは一人の顧客に対して複数件、登録することができます。

項目名(日本語) 項目名(英語) 項目の型 主キー 外部キー
サポートID supportid 整数型
顧客ID customerid 整数型
日付 supportdate 日付型
タイトル title 文字列型
サポート種別 supporttype 他モデルの項目参照(リストボックス)
内容 content 文字列型

新規モデルを作成します。

図1 新規モデルの作成

モデル名を「サポート」とします。モデルIDを「support」とします。

主キー項目「サポートID」の次に、外部キー項目「顧客ID」を用意します。
項目IDは、顧客モデルの項目ID (customerid) と同一としています。
型は、必ず同一(ここでは数値型)とします。

図2 サポートID,顧客IDの定義

顧客IDの詳細設定で、外部キーの欄を設定します。モデル名の指定は必須です。
参照先項目名は、項目IDの名前が異なるときに指定します。 今回は同一の項目ID (customerid) としたため、指定は不要です。(自動判別されます。)

図3 外部キーの設定

残りの項目を定義します。「サポート種別」はこのときは文字列型としておきます。(参照先の選択肢モデルが未作成のため)

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

新しい選択肢モデル「サポート種別」を用意します。初期値も設定します。(図5,図6,図7)

図5 選択モデルの作成
図6 サポート種別モデルを用意する
図7 初期値を用意する

再び、サポートモデルの編集画面に戻ります。サポート種別の型を「他モデルの項目参照」へと変更します。(図8,図9)

図8 サポートモデルの編集画面へ
図9 型の変更

図6で用意したサポート種別モデルと紐付けます。

図10 参照先モデルの設定

完成したモデル定義を示します。(図11)

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

これまでと同様に、Webアプリケーションの停止、ビルド、再起動を行います。 アプリケーションにログオン後、過去データのインポート処理を行います。

任意の顧客モデルの詳細表示画面を開きます。新しく「サポート新規作成」ボタンが用意されています。

このボタンが表示されないという場合は「リポジトリ>外部キー>連携に関する設定>ボタンの表示を制御する」の設定を確認してください。
図12 サポート新規作成ボタン

サポートの新規作成を行ってみます。親モデルである顧客の主キー(顧客ID)は、自動的に付与されます。

図13 サポートの新規作成

サポートの詳細表示画面では、親モデルである顧客への一覧表示・詳細表示画面へ遷移するためのボタンが提供されます。

図14 サポートの詳細表示画面

顧客の詳細表示画面では、これに紐づく N 件のサポート情報が表示されます。(1:Nの関係)

図15 顧客の詳細表示画面

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

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

ここまでのチュートリアルで「顧客」「営業日報」「サポート」という三つのモデルを、異なる方式で連携させました。これを図18に示します。


図17 モデル連携図

「よくある質問と回答 > チュートリアル」をお読み下さい。