Cake PHP テーブルのアソシエーションについて

アソシエーションの種類

cakePHPでは以下の4種類のアソシエーションがあります。

  • hasOne: 1 対 1   ex. ユーザは一つのプロフィールを保持
  • hasMany: 1 対 多   ex. ユーザは複数の投稿を持つ
  • belongsTo: 多 対 1   ex. 多くの投稿がユーザに属している
  • belongsToMany: 多 対 多   ex. カテゴリは多くの投稿に属している

このアソシエーションはTableクラスのinitialize()の中で定義することができ、アソシエーションを組むことによってデータを削除する際に関連データを同時に削除したり、データを取ってくるときに関連テーブルのデータを持ってくることができます。

アソシエーションの定義の仕方

アソシエーションはTableクラスのinitialize()の中で定義します。

namespace App\Model\Table;

use Cake\ORM\Table;

class ArticlesTable extends Table
{
    public function initialize(array $config)
    {
        $this->belongsTo('Authors'[
             'dependent' => true,     //dependentをtrueとするとdeleteの際にAuthorsのエンティティーも削除される
         ])    
    }
}