CakePHP3でDBテーブルを使わないモデル

スポンサーリンク

CakePHP3でデータベースのテーブルを使わないモデルのクラスを作成したかったのですが、いまいち正しいやり方が分かりません。src/Model 直下に何も継承しない単一のクラスを作って代用したのですけど、ビルトインのバリデーションの使い方も分からず、色々課題の残るエントリーです。

【お知らせ】 英単語を画像イメージで楽に暗記できる辞書サイトを作りました。英語学習中の方は、ぜひご利用ください!
画像付き英語辞書 Imagict | 英単語をイメージで暗記
【開発記録】
英単語を画像イメージで暗記できる英語辞書サービスを作って公開しました
スポンサーリンク

— 環境 —
CakePHP 3.1.1
PHP 5.5.19

CakePHP 2.* の場合

CakePHP 2.* 系ですと、$useTable に false を設定することでDBテーブルなしのモデルを作成できる。

バリデーションも設定すると使える。

CakePHP 3.* の場合

CakePHP 3 の場合、モデルのデフォルトのディレクトリ構造が以下のようになっています。

上記のディレクトリ構造になっていて、どうもモデルはDBテーブルを使うことが前提になっているような気が…。CakePHP3は、情報も経験も少ないので間違っているかもしれませんけれど。

通常のDBテーブルを利用するモデルの場合は、Table クラスを継承したモデルのクラスでバリデーションの設定を行います。以下公式ドキュメントを参考。

Validating Data – CakePHP Cookbook 3.x documentation

src/Model 以下に単一クラスを作って代用

公式ドキュメントや検索で情報を探してみたけど、結局正しいやり方が分からなかったので、src/Model 直下に単一の何も継承しない通常の PHP クラスを作って代用しました。

継承なしの通常の PHP のクラス(TableLessModel クラス)で代用。

src/Model/TableLessModel.php

バリデーションの設定の仕方が解決していないので、そこは課題です…。

コントローラーでは以下のように使う。

src/Controller/TableLessModelsController.php

一応こんな感じのコードを書いて動きはしたのですけど、色々だめな感じです。CakePHP3 で DB テーブルを使わないモデルの正しい作成の仕方をご存知な方がおられたら、ぜひご教授お願いいたします。テーブルなしのモデルでもビルトインのバリデーションは使いたいのですよね…。

スポンサーリンク
私は Ruby on Rails の前は、PHP & CakePHP を使っていました(今も使いますけど)。PHP についてはオライリーの本を中心に軽く10冊以上は読み込みました。
 
スポンサーリンク

Leave Your Message!