Bi-Directional References ========================= By default when you map a bi-directional reference, the reference is maintained on both sides of the relationship and there is not a single "owning side". Both sides are considered owning and changes are tracked and persisted separately. Here is an example: .. code-block:: php setUser($user); $post2 = new BlogPost(); $post2->setUser($user); $post3 = new BlogPost(); $post3->setUser($user); $dm->persist($post1); $dm->persist($post2); $dm->persist($post3); $dm->flush(); And we retrieve the ``User`` later to access the posts for that user: .. code-block:: php find('User', $user->id); $posts = $user->getPosts(); foreach ($posts as $post) { // ... } The above will execute a query like the following to lazily load the collection of posts to iterate over: .. code-block:: javascript db.BlogPost.find( { 'user.$id' : user.id } ) .. note:: Remember that the inverse side, the side which specified ``mappedBy`` is immutable and any changes to the state of the reference will not be persisted. Other Examples -------------- Here are several examples which implement the ``inversedBy`` and ``mappedBy`` options: One to One ~~~~~~~~~~~ Here is an example where we have a one to one relationship between ``Cart`` and ``Customer``: .. code-block:: php setCustomer(null); $dm->flush(); .. note:: When specifying inverse one-to-one relationships the referenced document is loaded directly when the owning document is hydrated instead of using a proxy. In the example above, loading a ``Customer`` object from the database would also cause the corresponding ``Cart`` to be loaded. This can cause performance issues when loading many ``Customer`` objects at once. Self-Referencing Many to Many ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: php name = $name; $this->friendsWithMe = new \Doctrine\Common\Collections\ArrayCollection(); $this->myFriends = new \Doctrine\Common\Collections\ArrayCollection(); } public function addFriend(User $user) { $user->friendsWithMe[] = $this; $this->myFriends[] = $user; } } .. _DBRef: https://docs.mongodb.com/manual/reference/database-references/#dbrefs