我想在 Doctrine 中表示两个用户之间的朋友关系。我能够创建关系,但我不知道删除它的最佳方法是什么。
我有以下架构:
User:
columns:
name: string(255)
relations:
Friends:
class: User
local: user1
foreign: user2
refClass: FriendReference
equal: true
FriendReference:
columns:
user1:
type: integer
primary: true
user2:
type: integer
primary: true
以下是我创建关系的方式:
$user1 = new User();
$user2 = new User();
$user1->Friends[] = $user2;
这完美地工作。
mysql> select * from friend_reference;
+-------+-------+
| user1 | user2 |
+-------+-------+
| 4 | 5 |
+-------+-------+
1 row in set (0.01 sec)
如果我要删除关系的两个主键 4 和 5,那么现在删除关系的最佳方法是什么?我可以
- 获取 ID 为 4 的对象并迭代
$user->Friends
,然后使用unlink
删除此关系。 编写以下查询
$query = Doctrine_Query::create() ->delete('FriendReference') ->where('(user1=4 AND user2=5) OR (user2=4 AND user1=5)') ->execute();
我认为这两种选择既不优雅也不高效。