いろいろ備忘録

雑記です。

関連のあるテーブルをまとめて持ってくる

アソシエーション - モデル同士を繋ぐ

例えば、
articles(id, title, text, author_id)とauthors(id,name)というテーブルがあるとする。

【記事を取得するとき、筆者の名前もまとめて持ってきたいときのやること】

$this->belongsTo('Authors')->setForeignKey('author_id');をArticlesTableのinitializeに記述する。
なお、setForeignKeyの引数は、外部キーの列名が被参照テーブル名の単数形 + _idのときは省略できる。つまり今回は省略できる。もしarticles(id, title, text,hissha_id)だったら省略できない。

find()->contain(['Authors'])という風に、find()するときまとめたいテーブルや列名を指定する

なお、Authorsテーブルにodenテーブルが関連づいていて、
ついでにodenテーブルも関連付けたいときには、
find()->contain(['Authors','Authors.oden'])とドット区切りでテーブル名を指定する