Symfony1.4にて、schema.yml を作成しているときに、同じテーブルのカラムへの複数リレーションを持たせるのに苦労したのでメモ。
本の情報を登録したユーザと変更したユーザの情報を持つために、registry_user_id と edit_user_id というレコードを Book テーブルに持たせています。
それぞれ、User テーブルのid とリレーションを持たせたいのですが、下記のように書くと、後ろの edit_user_id しかリレーションを持てません。
Book:
actAs:
Timestampable: ~
Sluggable: ~
columns:
.
.
registry_user_id:
type: integer
notnull: true
edit_user_id:
type: integer
.
.
relations:
User:
onDelete: CASCADE
local: registry_user_id
type: one
alias: RegistryUser
foreign: id
foreignType: one
User:
onDelete: CASCADE
local: edit_user_id
type: one
alias: EditUser
foreign: id
foreignType: one
これを下記のように、クラス名を直接指定するのではなく、それぞれに名前を持たせて class: User と指定すればOKです。
RegistryUser:
onDelete: CASCADE
class: User
local: registry_user_id
type: one
foreign: id
foreignType: one
EditUser:
onDelete: CASCADE
class: User
local: edit_user_id
type: one
foreign: id
foreignType: one
以上です。