2011-04-08 103 views
0

我想知道在Doctrine夾具中內聯定義多對多關係的正確方法。例如,考慮sfDoctrineGuardPlugin。該模式可以發現here學說:在夾具中定義多對多內聯關係

我定義諸如夾具: 我已經有2組在sfGuardGroup表,所以我想提到的GROUP_ID

sfGuardUser: 
    soc-sfUser-1: 
    first_name: Mrs 
    last_name: Balasubramanium 
    email_address: [email protected] 
    username: [email protected] 
    password: admin 
    Groups: [{group_id: 2}] 
    is_active: 1 

這是正確的嗎?

回答

1

如果您還限定在固定的羣體,可以按名稱引用它們:

sfGuardGroup: 
    GroupAdmin: ... 
    GroupEditor: ... 

sfGuardUser: 
    ... 
    Groups: [GroupEditor] 

如果你想指定你應該寫這樣一個實際ID:

sfGuardUser: 
    foo: 
    first_name:  Foo 
    last_name:  Bar 
    ... 
    sfGuardUserGroup: [{group_id: 2}] 

爲什麼?如果您在schema.yml文件sfDoctrineGuardPlugin的看看,你可以看到一個refClass財產上sfGuardUser關係:

relations: 
    Groups: 
    ... 
    refClass: sfGuardUserGroup 

這是一個有點棘手和學說沒有做到有據可查,但它似乎工作。

+0

是的,意識到這一點。但是我的組在用戶之前加載(不在相同的數據:加載任務或事務中),所以我需要使用靜態ID來引用組。謝謝反正 – Prasad 2011-04-08 08:15:01

+0

@Prasad我想我找到了解決方案。至少它在我做的一些測試中爲我工作。 – elitalon 2011-04-08 09:31:50

+0

謝謝!希望根據你的第一個回覆,組:[{name:Test Group}]也可以工作 – Prasad 2011-04-08 10:06:42