Accessing the underlying PHPCR session

PHPCR-ODM builds on top of the PHPCR api. You can access this to do operations not provided by the DocumentManager. However, if you do any data manipulations, you risk to get the DocumentManager out of sync. If you do not know exactly what you do, it is recommended to flush before accessing the PHPCR layer, and then not use the DocumentManager any longer. To flush the operations you did on PHPCR layer, you can call SessionInterface::save()

Getting the PHPCR Session

The DocumentManager provides access to the PHPCR session:

$session = $documentManager->getPhpcrSession();
// do stuff
$session->save();

The Node field mapping

Using the node mapping, you can set the PHPCR\NodeInterface to a field of your document. This field is populated on find, and as soon as you register the document with the manager using persist().

  • PHP
    1use Doctrine\ODM\PHPCR\Mapping\Attributes as PHPCR; use PHPCR\NodeInterface; #[PHPCR\Document] class MyPersistentClass { #[PHPCR\Node] private NodeInterface $node; }
    2
    3
    4
    5
    6
    7
    8
    9
  • XML
    1<doctrine-mapping> <document class="MyPersistentClass"> <node fieldName="node"/> </document> </doctrine-mapping>
    2
    3
    4
    5
  • YAML
    1MyPersistentClass: node: node
    2