libro
www.tuyano.com
初心者のためのCakePHP3 プログラミング入門

モデルとデータベース (5/5)

作成:2015-09-12 10:46
更新:2015-09-12 10:46

■初期化処理とバリデーションの設定

自動生成されたテーブルクラスには、デフォルトで2つのメソッドが用意されています。これらは単にメソッドの「入れ物」だけが用意されているのではなく、必要なコードが書かれています。


・initializeメソッド
これは初期化処理を行うためのものです。parent::initialize($config);で親クラスの処理を呼び出した後、以下のような処理を行っています。
$this->table('persons');
テーブルの設定です。tableは、このテーブルクラスで使用するデータベースのテーブルを指定するものです。CakePHPでは命名規約に従って名前をつけていればほぼ自動的にテーブルを認識できますが、このtableメソッドを利用することで独自にテーブルを設定することができます。
$this->displayField('name');
これは、レコードの表題(タイトルのようなもの)として使われるフィールドを指定するものです。レコードを検索して取り出すようなときに、検索したレコードを表すのに、このdisplayFieldで指定したフィールドの値が利用されます。
$this->primaryKey('id');
これはプライマリキーとなるフィールドを設定するものです。これは、テーブルでプライマリキーに指定されているフィールドをそのまま指定します。ここで別のフィールドを指定したからといって、そのフィールドがプライマリキーになるわけではありません。ちゃんとデータベースのテーブル側で設定してないとダメですよ。


■バリデーション設定について

もう1つ、「validationDefault」というメソッドがありますが、これはテーブルの各フィールドに指定されるバリデーションの設定を行うためのものです。ちょっと書かれているコードを見てみましょう。
 $validator
            ->add('id', 'valid', ['rule' => 'numeric'])
            ->allowEmpty('id', 'create');

このように、「$validator」という変数があり、その中のメソッドを呼び出していることがわかります。これは「Validator」というクラスのインスタンスです。ここでは、以下のようなメソッドを呼び出しています。

add――引数に指定したバリデーション設定を追加する。
allowEmpty――空の値を許可するように設定する。
notEmpty――空の値を許可しないように設定する。

バリデーションの細かい内容などは、いずれ改めて触れる予定ですの。ここでは、「テーブルクラスにあるvalidationDefaultというバリデーション用のメソッドでバリデーションが設定される」ということだけ覚えておけばよいでしょう。


エンティティとテーブルの基本がだいたいわかったところで、次回、これらを利用したデータベースアクセスについて作成していくことにしましょう。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

<?php
namespace App\Model\Table;

use App\Model\Entity\Person;
use Cake\ORM\Query;
use Cake\ORM\RulesChecker;
use Cake\ORM\Table;
use Cake\Validation\Validator;

class PersonsTable extends Table
{

    public function initialize(array $config)
    {
        parent::initialize($config);

        $this->table('persons');
        $this->displayField('name');
        $this->primaryKey('id');
    }

    public function validationDefault(Validator $validator)
    {
        $validator
            ->add('id', 'valid', ['rule' => 'numeric'])
            ->allowEmpty('id', 'create');

        $validator
            ->requirePresence('name', 'create')
            ->notEmpty('name');

        $validator
            ->add('age', 'valid', ['rule' => 'numeric'])
            ->allowEmpty('age');

        $validator
            ->allowEmpty('mail');

        return $validator;
    }
}
※関連コンテンツ

「初心者のためのCakePHP3 プログラミング入門」に戻る