モデルの基本 (モデルの作成とプロパティ)

PowerCMS Xでは、「モデル」機能によって、データベースのテーブルの構造を定義し、管理画面の入力フォームを同時に定義することができます。 「モデル」とは、Model View Controllerにおけるモデルを指しますが、PowerCMS XではいわゆるMVC2における「モデル=データ」の部分を担います。

  • モデル=アプリケーションのデータ部分。「記事」「ページ」「カテゴリ」「アセット」などはすべて「モデル」です。
  • PowerCMS Xにおける「モデル」はデータベース・マイグレーションツールでもあり、モデルを作成すると、データベースにテーブルが作成され、モデルに「カラム」を作成するとテーブルにカラムが追加されます。これらの操作はすべて管理画面操作を通じて行われます。
  • モデルには「リレーション」擬似カラムを追加・設定できます。リレーションは、同一もしくは異なるモデルのオブジェクト同士を1対1または1対多で関連づけるものです(リレーショナル・データベース)。
  • モデルの管理画面は、データベースマイグレーションツールである側面を持つ一方で、管理画面作成ツールの側面も持っています。つまり、データベースのスキーマを定義すると同時に、管理画面上でそのデータをどのように入力・管理するかを定義します
  • モデルの「プロパティ」は、モデルがどのような性質を持つモデルかを定義するものです。バージョン管理を行うか、階層を持つことができるか、ワークフローに対応するか、など、モデルの特性を定義します。プロパティを設定すると、必要なカラムが自動的に作成されます。

モデルの作成と編集

既存のモデルをカスタマイズする、または新しいモデルを作るには、システムメニューの「システムオブジェクト」→「モデル」を選択し、既存のモデルを選択するか、「新しいモデル」をクリックします。

新しいモデルの作成画面

  • モデル名はそのままデータベースのテーブル名になります。日本語名などは利用できません。
  • ラベル、複数形にも日本語名などは利用できません。ラベル、複数形はテンプレート・タグ名(ラベルはファンクションタグ、複数形はブロックタグ)に利用されます。
  • ラベル・複数形は、モデル作成後、「フレーズ」にローカライズする日本語名を登録してください。
  • プライマリに設定できるカラムの条件は以下の通りです。
    1. カラムの一覧表示が設定されている
    2. カラムのタイプが「テキスト(50)」「テキスト(255)」「テキスト(768)」のいずれかを設定している
    3. rev_note, rev_changed 以外のカラム

モデルのオプション(プロパティ)の設定

プロパティ名(オプション) 説明 生成されるカラム
システムに表示 システムメニューにリンクを表示します。  
メニュータイプ メニューの表示位置を指定します。  
自動監査 MT::Object(PowerCMS)のauditにあたる設定です。 created_on / created_by / modified_on / modified_by
タグ付け オブジェクトに「タグ」を付与できるようにします。 tags (擬似カラム)
テンプレート・タグ ダイナミック・タグを利用可能にします。  
ベースネーム ベースネーム(システムもしくはスペースで自動設定されるユニークな識別子)カラムを追加します。 basename
ユーザーをアサイン 「ステータス対応」と「有効期限対応」をあわせて設定することで、ワークフローの対象とします。 user_id / previous_owner
リビジョン対応 オブジェクトのリビジョンを保存可能にします。 rev_type / rev_object_id / rev_changed / rev_note / rev_diff
ステータス対応 「有効・無効」もしくは「下書き・レビュー・承認依頼・公開予約・公開・公開終了」を指定できるようにします。 status
有効期限対応 ステータスを「下書き・レビュー・承認依頼・公開予約・公開・公開終了」で管理できるようにします。「ユーザーをアサイン」をあわせて設定することで、ワークフローの利用が可能になります。  
階層 オブジェクトを階層管理可能にします(例 : カテゴリ / フォルダ)。 parent_id
アセット オブジェクトに複数のアセットを関連づけられるようにします。 assets (擬似カラム)
添付ファイル オブジェクトに複数の添付ファイルを関連づけられるようにします。 attachmentfiles (擬似カラム)
UUID 自動的に設定されるUUIDカラムを追加します。 uuid
インポート & エクスポート CSVインポート、エクスポートの対象とします。  
ダイアログ・ビュー 「リレーション」型の(擬似)カラムを作成し、編集表示「ダイアログ」を指定した時、権限の有無に関わらずオブジェクトをダイアログで選択可能にします。  
複製 オブジェクトの一覧画面または編集画面でオブジェクトを「複製」可能にします。  
フォーム オブジェクトに「フォーム」を関連づけられるようにします。 form_id
スペースの子テーブル オブジェクトをスペース(WorkSpace)の子オブジェクトとします。 workspace_id
スペースに表示 スペース(WorkSpace)メニューに一覧画面へのリンクを表示します(表示位置はシステムのメニュータイプに準じます)。 workspace_id
ダッシュボードに表示 「モデル」ダッシュボードにウィジェットを表示します。
※ 「スペースに表示」オプションが有効の場合に選択可能
 
表示順 メニューにおける表示順(数字)を設定します。一覧画面でドラッグ & ドロップで設定することもできます。  
ソート可 編集画面に数字を入力するか、一覧画面でドラッグ & ドロップで表示順を設定できます。 order

上記オプションのうち、いくつか抜粋して補足説明します。

メニュータイプ

モデルの一覧画面へのリンクをシステムメニュー、スペースメニューにそれぞれ表示させることができます。表示位置の指定は「オプション」→「メニュータイプ」ドロップダウンで行います。頻繁にアクセスするモデルを「パネル」に指定すると、常にメニューに表示されるようになります。
※ パネルに表示されるモデル数は、環境変数:panel_limit で設定します。設定値を超えたものについては、ドロップダウンメニュー内に移動します。(初期値:5)

尚、それぞれのメニューの表示順は、モデルの一覧画面でドラッグ&ドロップで並べ替えできます(表示順カラムが表示されない時は、一覧画面右上の「画面オプション」の設定を確認ください。

メニューの表示位置

タグ付け

記事、ページの作成・編集画面が参考になります。下記のような欄が追加され、タグ付けできるようになります。

タグ設定画面

テンプレート・タグ

チェックが有ればmt+モデル名+カラム名のテンプレートタグを使えるようになります。
例 : mt:BannerName

バナーモデルの「テンプレート・タグ」にチェックがないと、このタグは使えません。

ユーザーをアサイン(+ステータス対応+有効期限対応)

ユーザーを選択できるようになり、所有者を変更できます。

ユーザーをアサイン

あわせてステータス対応、有効期限対応し、ワークフローの設定をすると、添付のような表示に変わり、ワークフローを利用できるようになります。

ワークフロー

リビジョン対応

変更履歴を保存するようになります。

変更履歴の保存

リビジョンの一覧

階層

一覧画面に「階層の管理」ボタンが追加されます。

下記の画面から、ドラッグ&ドロップで階層管理が可能になります。

階層の管理

階層付きのオブジェクトは以下のテンプレートタグで、ネストして出力できます。
https://powercmsx.jp/about/system_tags.html#nestableobjects

アセット

アセットとの1対多のリレーションです。リットテキストを利用している時、リッチテキストに貼り付けられたアセットが自動で追加されます。

アセット

添付ファイル

PDFマニュアルの70P以降、または下記のページを参照してください。

https://powercmsx.jp/about/attachment_files.html

UUID

「30e34863-1c24-48ec-8ad9-ad07acdafab3」のようなユニークな値が付与されます。
UUIDの指定のあるモデルは、ExternalPreview(外部プレビュー)の対象とすることができます。

https://powercmsx.jp/about/external_preview.html

フォーム

フォームとの1対1のリレーションを設定できます。

フォームの一覧

スペースの子テーブル

workspace_idが追加されモデルのオブジェクトはスペースの子オブジェクトとなります。スペースを削除すると、配下のオブジェクトも削除されます。

ダッシュボードに表示

ウィジェットの下部に並んでいるものがこれにあたります。ワークスペースのダッシュボードに表示され、新規作成などがダイレクトに行えます。

ダッシュボードに表示


関連情報