エンティティ

テーブルとエンティティ

テーブル

データのコレクションにアクセスする。新しいレコードを保存したり、 既存データの編集/削除、リレーションの定義、そして一括処理ができる。

エンティティ

レコードレベルの振る舞いや機能の定義を行う。

エンティティの生成

エンティティクラスの生成

<?php
// src/Model/Entity/Article.php
namespace App\Model\Entity;

use Cake\ORM\Entity;

class Article extends Entity
{
}
?>

コントローラなどでエンティティクラスをロードし、エンティティを生成。

<?php
use App\Model\Entity\Article;

$article = new Article([
    'id' => 1,
    'title' => 'New Article',
    'created' => new DateTime('now')
]);
?>

エンティティのデータへのアクセス

<?php
use App\Model\Entity\Article;

$article = new Article;

$article->title = 'This is my first post'; // 書き込み
echo $article->title; // 読み取り
?>

getとsetメソッドでも可。

<?php
$article->set('title', 'This is my first post');
echo $article->get('title');
?>
バリデーションエラーへのアクセス
<?php
$user->getErrors(); // エラーの取得
$user->getError('password'); // 1つのフィールドのエラーを取得
$user->hasErrors(); // エンティティーまたはネストされたエンティティーにエラーがあるか
$user->hasErrors(false); // ルートエンティティーのみにエラーがあるか
$user->setError('password', ['Password is required']); // 
?>

マスアサインメントの設定

_accessibleプロパティにより、一括代入できるプロパティを指定する。

<?php
namespace App\Model\Entity;

use Cake\ORM\Entity;

class Article extends Entity
{
    protected $_accessible = [
        'title' => true,
        'body' => true,
    ];
}
?>