我想在Doctrine中表示兩個用戶之間的朋友關係。我可以創建關係,但我不知道刪除它的最佳方式是什麼。如何刪除Doctrine中的自引用n:n關係?
我有以下模式:
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
下面是如何創建relationsship:
$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();
我覺得這兩個選項既不優雅,也不高性能。