モデルの基本 (カラムとリレーションの設定)

モデルの編集画面では、任意のカラムをテーブルに追加すると同時に、一覧画面・編集画面でそのカラムをどのように扱うか(入力させるか)を指定することができます。

タイプ 作成されるカラム 説明
数値 数値型(int(11)) 数値を保存する時、また、1対1のリレーションを指定する時に指定します。インデックスを指定することができます。
真偽値 数値型(int(4)) 数値を保存する時、主にブーリアン型(真偽値)のデータを扱う際に指定します。インデックスを指定することができます。
テキスト(255) 文字列型(varchar(255)) 256文字未満の文字列を保存する時に指定します。インデックスを指定することができます。
テキスト 文字列型(mediumtext) 長いテキストを保存する時に指定します。インデックスを指定することはできません。
日付と時刻 日付型(datetime) 日付を保存する時に指定します。インデックスを指定することができます。
バイナリ BLOB(longblob) 画像やファイルなどをバイナリ・ラージ・オブジェクトに保存する時に指定します。
リレーション (作成されません) この型を指定した場合、テーブルにカラムは作成されず、中間テーブルを介してオブジェクト同士を関連付けることができるようになります。主に、1対多の関連付けに利用します。

「セミナー(Seminar)」モデルの作成と設定例

例として「セミナー(Seminar)」モデルの作成と設定、管理画面の構成方法について紹介します。

「スピーカー(Speaker)」モデルの作成

スピーカーの編集画面

まず、あらかじめセミナーへの登壇者を登録する「Speaker(スピーカー)」モデルを別途作成します。

  • モデル「speaker」(ラベル「Speaker」、複数形「Speakers」)の作成(※)
  • 「名前(name) 」「プロフィール(profile) 」といった入力項目
  • カラムタイプ「バイナリ」、編集表示「ファイル(画像) 」のカラム「photo」

※ ラベルや複数形は日本語で入力することもできますが、基本的に英語表記で設定し、「システムメニュー」→「システムオブジェクト」→「フレーズ」に翻訳フレーズを登録するようにします。こうすることで、ユーザーの言語設定による管理画面の多言語対応が可能になります。


続いて、「セミナー」モデルを作成します。

  • モデル「seminar」(ラベル「Seminar」、複数形「Seminars」)の作成
  • 時限公開・ワークフローを設定するためのプロパティ(オプション)を設定
  • 「タイトル(title) 」「概要(description) 」といった入力項目
  • 選択項目「カテゴリ 」(※)
  • 別のモデル「Speaker(スピーカー) 」とのリレーション
  • 申し込みを受け付けるための「フォーム
  • 資料などのダウンロードを提供するための「添付ファイル

※ ver.2.57で選択項目カラムのオプションで、値とラベルをデリミタ「=」で繋いだ形式のデータ指定をサポートしました(PowerCMS のカスタムフィールドと同じように指定 : 例「値A=ラベルA,値B=ラベルB...」)。

「セミナー」モデルの設定

セミナーの編集画面

  • 編集タイプ「プライマリ」指定の「タイトル(title)
  • 編集タイプ「リッチテキスト」指定の「概要(description)
  • 編集タイプ「選択項目」タイプ「ラジオボタン」の「カテゴリ
  • 別のモデル「Speaker(スピーカー) 」との1対複数のリレーション
  • カラムタイプ「数値」、別のモデル「Form(フォーム)」との1対1のリレーション「フォーム
  • カラムタイプ「リレーション」1対複数リレーションの「添付ファイル 」(※)

※ 「添付ファイル」リレーションはモデルのオプション(プロパティ)指定で自動的に作成される(擬似)カラムです。

「添付ファイル」(擬似)カラムについて

オブジェクトにファイルを添付する方法には以下の3つの方法があります。

指定方法 説明
カラムタイプ「バイナリ」、編集表示「ファイル」のカラムを作成 BLOB型のカラムをモデルに作成して、そこへデータを格納する方法です。オブジェクトのステータスと実ファイルの書き出しが完全に同期しますが、1つのモデルに多数のBLOB型カラムを作成して多数のファイルを関連づけると、列が大きくなります。参考 : InnoDBの圧縮テーブルの設定 | PowerCMS X
「アセット」をリレーションで関連づける モデルのオプション(プロパティ)「アセット」を指定すると生成されるリレーション型の擬似カラムです。
アセットが利用されているオブジェクトは1つとは限らないため、参照元オブジェクトのステータスとは独立してステータス管理されます。

つまり、セミナー情報の公開と同時にファイルを公開したり、セミナー情報を公開終了した時にファイルを非公開にする、といった運用はできません。

ver. 2.2のUploadUtilitiesプラグイン 別ウィンドウで開きますで参照元モデルのステータスとアセットのステータス同期が可能になりました。
「添付ファイル」をリレーションで関連づける モデルのオプション(プロパティ)「添付ファイル」を指定すると生成されるリレーション型の擬似カラムです。
アセットが利用されているオブジェクトは参照元オブジェクト1つであることが保証されます。

つまり、セミナー情報の公開と同時にファイルを公開したり、セミナー情報を公開終了した時にファイルを非公開にする、といった運用が可能です。

今回は3番目の『添付ファイルをリレーションで関連づける』形で設定しています。テンプレート・タグにチェックがある(ダイナミック・タグが有効である)とき、mt:seminarattachmentfiles ブロックタグで添付されたファイルのURLなどの情報が出力できるようになります。

「セミナー(Seminar)」モデルに対して、アーカイブを設定してページを出力可能にする

各セミナーに対する個別ページを公開するには、モデル「セミナー」に対する「ビュー」を作成し、URLマッピングを作成します。具体的な方法については、下記のページを参照してください。


関連情報