CakePHPにおけるアソシエーション

アプリケーション内で異なるオブジェクト同士の関連を定義しているのがアソシエーションです。例えばブログでは記事は多くのコメントを持っていて、記事は一人のユーザーに属しています。

  • 1対1 : hasOne
  • 1対多 : hasMany
  • 多対1 : belongsTo
  • 多対多 : belongsToMany

アソシエーションはTableで定義します。

namespace App\Model\Table;

use Cake\ORM\Table;

class ArticlesTable extends Table
{

    public function initialize(array $config)
    {
        $this->belongsTo('Authors');
    }

}

initializeの中で下記のように定義すると

$this->belongsTo('Authors', [
    'className' => 'Publishing.Authors',
    'foreignKey' => 'authorid',
    'propertyName' => 'person'
]);

自分でカスタマイズすることも可能です。