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

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

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

■テーブルクラスについて

続いて、テーブルクラスを見てみましょう。これは、「Table」フォルダの中に用意されています。ここにある「PersonsTable.php」というのがpersonsテーブル用に作られたテーブルクラスのソースコードです。このようにテーブルクラスは、「テーブル名Table」といった形で命名されるのが基本です。

生成されたコードを下に掲載しておきましょう。こちらは、思ったよりもいろいろと書きだされていることがわかりますね。では、ポイントを整理しましょう。

・名前空間について
テーブルクラスは、「Table」というクラスを継承して作成します。このTableは、App\Model\Tableという名前空間に配置されています。テーブルクラスも、ここに配置します。

・using文
テーブルクラスでは、デフォルトでいくつかのコードが生成されており、それらの中でいくつかのクラスが利用されています。デフォルトでいくつも書かれていますが、これらは「こんなもの自分は利用しない」と思っても削除しないようにしましょう。

・Tableクラス
既に述べたようにテーブルクラスは「Table」というクラスを継承して作成します。クラス定義の部分を見ると、「class PersonsTable extends Table」というようにextends Tableしていることがわかるでしょう。テーブルクラスは、必ずこのようにTableを継承して作ります。


――クラスの定義そのものはそれほど難しくはありません。問題は、その中にあるメソッドでしょう。デフォルトで、具体的なコードが自動生成されているのですから。これらのメソッドの働きを見てみましょう。

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

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 プログラミング入門」に戻る