我正在尝试在我正在构建的应用中创建类似社交网络的功能,并希望将朋友与其他朋友关联.
假设我有这个:
Friend:
connection: doctrine
tableName: friend
columns:
id:
type: integer(8)
primary: true
autoincrement: true
name:
type: string(75)
notnull: true
Run Code Online (Sandbox Code Playgroud)
如何创建多对多关系以将朋友与自己联系起来?
提前谢谢你的帮助..
来自文档:
平等关系
等嵌套关系非常适合表示类引用自身和引用类中的列相等的关系.
这意味着在获取相关记录时,引用类中的哪个列具有主类的主键值无关紧要.
前面的条款可能很难理解,所以让我们举一个例子.我们定义了一个名为User的类,它可以有很多朋友.请注意我们如何使用'equal'选项.
// models/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
)
);
}
}
Run Code Online (Sandbox Code Playgroud)
以下是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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1622 次 |
| 最近记录: |