モデルとデータベース (4/5)
作成:2015-09-12 10:42
更新: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を継承して作ります。
――クラスの定義そのものはそれほど難しくはありません。問題は、その中にあるメソッドでしょう。デフォルトで、具体的なコードが自動生成されているのですから。これらのメソッドの働きを見てみましょう。
生成されたコードを下に掲載しておきましょう。こちらは、思ったよりもいろいろと書きだされていることがわかりますね。では、ポイントを整理しましょう。
・名前空間について
テーブルクラスは、「Table」というクラスを継承して作成します。このTableは、App\Model\Tableという名前空間に配置されています。テーブルクラスも、ここに配置します。
・using文
テーブルクラスでは、デフォルトでいくつかのコードが生成されており、それらの中でいくつかのクラスが利用されています。デフォルトでいくつも書かれていますが、これらは「こんなもの自分は利用しない」と思っても削除しないようにしましょう。
・Tableクラス
既に述べたようにテーブルクラスは「Table」というクラスを継承して作成します。クラス定義の部分を見ると、「class PersonsTable extends Table」というようにextends Tableしていることがわかるでしょう。テーブルクラスは、必ずこのようにTableを継承して作ります。
――クラスの定義そのものはそれほど難しくはありません。問題は、その中にあるメソッドでしょう。デフォルトで、具体的なコードが自動生成されているのですから。これらのメソッドの働きを見てみましょう。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
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 プログラミング入門」に戻る