アソシエーションの種類
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のエンティティーも削除される ]) } }