$this->table('persons');テーブルの設定です。tableは、このテーブルクラスで使用するデータベースのテーブルを指定するものです。CakePHPでは命名規約に従って名前をつけていればほぼ自動的にテーブルを認識できますが、このtableメソッドを利用することで独自にテーブルを設定することができます。
$this->displayField('name');これは、レコードの表題(タイトルのようなもの)として使われるフィールドを指定するものです。レコードを検索して取り出すようなときに、検索したレコードを表すのに、このdisplayFieldで指定したフィールドの値が利用されます。
$this->primaryKey('id');これはプライマリキーとなるフィールドを設定するものです。これは、テーブルでプライマリキーに指定されているフィールドをそのまま指定します。ここで別のフィールドを指定したからといって、そのフィールドがプライマリキーになるわけではありません。ちゃんとデータベースのテーブル側で設定してないとダメですよ。
$validator
->add('id', 'valid', ['rule' => 'numeric'])
->allowEmpty('id', 'create');
※リストが表示されない場合
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;
}
}
| << 前へ |