Symfony4学说ODM-ManyToMany空着

时间:2018-10-01 22:55:39

标签: symfony symfony4 doctrine-odm odm

我的多对多关系有问题

我有一个可以在多个团队中使用的User类 和可以拥有多个用户的班级团队

class User

    /**
     * @var Collection
     * @ODM\ReferenceMany(
     *     targetDocument="App\Model\Document\Team",
     *     mappedBy="members",
     *     strategy="setArray"
     * )
     */
    protected $teams;

class Team

    /**
     * @var Collection|null
     * @ODM\ReferenceMany(
     *     targetDocument="App\Model\Document\User",
     *     inversedBy="teams",
     *     strategy="setArray",
     *     sort={"username": "asc"},
     *     cascade={"persist"}
     * )
     */
    protected $members;

有了这些注释,当我将成员User添加到团队中并且对Team的实例执行getMembers时,它就可以工作。 但是,当我有一个User实例(它是团队的成员)时,getTeams不返回任何内容(空PersistentCollection)

参考文献以参考文献数组的形式存储在团队文档中

"members" : [ 
    {
        "$ref" : "User",
        "$id" : ObjectId("XXX"),
        "$db" : "readDat"
    }
],

我不明白,对于现在的注释,我认为Doctrine会做这样的事情db.getCollection('Team').find({"members.$id":ObjectId("XXX")}) 拥有球队,但似乎没有。

另一方面,我尝试将mappedByinversedBy求逆,甚至getMembers(在Team对象上)或getTeams(在用户对象),它们都是空的Collection。

我怎样才能拥有一个很好的多对多(两个文档中的引用都没有重复)?

0 个答案:

没有答案