2011-04-08 98 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