Use self-referencing equal nest relations。
從文檔:
平等鳥巢關係
平等巢關係是完全 適合表達關係 哪裏自身和參考類 內的類引用 的列等於。
這意味着,當取得被相關 記錄不要緊哪一列 在參考類具有主類的主 鍵值。
以上條款可能難以理解,所以下面舉個例子。我們 定義了一個叫做User的類,它可以有 有很多朋友。請注意我們 如何使用'平等'選項。
//模型/ user.php的
class User extends BaseUser
{
public function setUp()
{
parent::setUp();
// ...
$this->hasMany('User as Friends', array(
'local' => 'user1',
'foreign' => 'user2',
'refClass' => 'FriendReference',
'equal' => true,
)
);
}
}
// models/FriendReference.php
class FriendReference extends Doctrine_Record
{
public function setTableDefinition()
{
$this->hasColumn('user1', 'integer', null, array(
'primary' => true
)
);
$this->hasColumn('user2', 'integer', null, array(
'primary' => true
)
);
}
}
這裏是YAML格式相同的例子。您可以在YAML Schema> Files章節中閱讀有關YAML的更多信息:
---
# schema.yml
# ...
User:
# ...
relations:
# ...
Friends:
class: User
local: user1
foreign: user2
refClass: FriendReference
equal: true
FriendReference:
columns:
user1:
type: integer
primary: true
user2:
type: integer
primary: true