FMCakeMixのUser Guide.pdfを参考に、CakePHP x FileMakerでWebアプリの作成方法を紹介する。FX.phpに添付されているFileMakerファイルをベースに、Paginationを使った一覧画面の実装方法を。前回よりCakePHP, FMCakeMixの規約を一部を紹介した。今回は規約にしたがい、実際にFileMakerデータベースを作成してみよう。

Hello, FMCakeMix! チュートリアル / FileMakerファイル・テーブルの作成

1から作るFMCakeMixチュートリアル、ここでは簡単な書籍管理を作成してみよう。管理するのは「書籍の情報」と「著者の情報」の2種類。

まずはFileMakerファイルを作成する。ここではファイル名を「fmcakemix_db.fp7」とした。

FileMakerファイル「fmcakemix_db.fp7」を作成。カラムはまだ何もなし

テーブル・フィールドの定義

続けてテーブルを作成する。まず思い出してほしいのは「モデルとデータベースの規約」。モデルのクラス名は単数形でキャメル記法をもちい、CakePHPのモデルに対応するテーブル名は複数系でアンダースコア記法をもちいる。

FMCakeMixのモデル名 FileMakerテーブル名 用途
Book books 書籍情報を格納
Author authors 著者情報を格納

2つのテーブルの関係性は「属する(belongsTo)」。booksテーブルはauthor_idを外部キーとしてauthorsテーブルのデータを参照する。

booksテーブルのフィールド

フィールド名 タイプ オプション 備考
id 数字 番号自動入力, ユニークな値 IDフィールド
created テキスト   レコード登録日時を格納
modified テキスト   レコード更新日時を格納
title テキスト   書籍名
author_id 数字   著者との関連付けキー

テーブル「books」フィールド一覧

レコードを操作した日時を格納するcreated、modifiedはテキストタイプとした。自動入力もおこなわない

authorsテーブルのフィールド

フィールド名 タイプ オプション 備考
id 数字 番号自動入力, ユニークな値 IDフィールド
created テキスト   レコード登録日時を格納
modified テキスト   レコード更新日時を格納
name テキスト   著者名

テーブル「authors」フィールド一覧

created、modifiedは「books」テーブルと同じ

books, authorsテーブルのリレーション図

createdとmodifiedはCakePHPでは特別な意味を持っている。データベースのテーブル内でこれらのフィールドを用意しておけば、CakePHP側で登録日時と更新日時を補完してくれる。ここで注意してほしいのは、次の2点。

  • datetime型のカラムを想定しているため、UNIXタイムスタンプ形式の日時が格納される
  • 「FMCakeMix経由でレコードを登録・更新した場合」にのみ効果を発揮する

created、modifiedを日付タイプやタイムスタンプタイプとしてしまうと、日付/時刻の値が入力値の制限を満たさず、エラーが返ってしまう。また、これらの値は表示する際にdate()などで見やすい日付フォーマットに変換する必要がある。Webアプリ、FileMaker Pro両側からレコードを操作する場合は、これらの機能に頼らず、自動入力を設定したタイムスタンプのフィールドを用意しておいた方が良いだろう。

レイアウトの作成

FileMakerではテーブルを作成したときに、同名のレイアウトを作成する。ここではレイアウト名を「books_list」「authors_list」とした。

レイアウト「books_list」

レイアウト「authors_list」

両レイアウトにはポータルを配置しない。

アカウントの設定、ファイル共有の準備

テーブル・レイアウトの準備が終わったら、FileMaker Serverで公開をする設定をおこなう。設定したアカウント情報、拡張アクセス権は次のとおり。

  • アカウント: fmcakemix_user
  • パスワード: fmcakemix_password
  • アクセス権セット: 完全アクセス
  • 拡張アクセス権: fmxml

FMCakeMixからファイルを開くためのアカウントを作成

今回有効にする拡張アクセス権はfmxml。fmxmlとfmphpを混同しないように注意

用途に応じてアクセス権セットはカスタマイズする。FMCakeMixはFX.php(XML Web公開機能)を使って通信をおこなうので、拡張アクセス権はfmxmlを設定する。最後にFileMakerネットワーク設定で「ファイルへのネットワークアクセス」をすべてのユーザで許可するように設定する。

「ファイルへのネットワークアクセス」をすべてのユーザで許可するように。これでFileMaker Serverで公開しているファイルを共有で開けるようになる

これでファイル共有の準備は完了だ。いったんファイルを閉じ、FileMaker Serverで公開する。

PHPの作成

規約にしたがってモデル、コントローラ、ビューファイルを作成していく。命名規則にしたがうと、2テーブルのPHPファイルはそれぞれ次のとおりに。

books

種類 名称 ファイルパス
モデルクラス Book /app/models/book.php
コントローラクラス BookController /app/controllers/books_controller.php
ビューのテンプレート - /app/views/books/index.ctpなど

authors

種類 名称 ファイルパス
モデルクラス Author /app/models/book.php
コントローラクラス AuthorController /app/controllers/authors_controller.php
ビューのテンプレート - /app/views/authors/index.ctpなど

追ってコントローラ、モデル、データベース設定の書き方を紹介していこう。