Enables or disables auto-resolving fetch types.
Auto-resolving aliased parent beans is convenient but can
be slower and can create infinite recursion if you
used aliases to break cyclic relations in your domain.
public static setAutoResolve ( boolean $automatic = TRUE ) : void | ||
$automatic | boolean | TRUE to enable automatic resolving aliased parents |
return | void |
/** * Test whether aliases are not used if not necessary: * when using fetchAs() or R::aliases(). * * @return void */ public function testAutoResolvAvoid() { R::setAutoResolve(TRUE); R::nuke(); $book = R::dispense('book'); $page = R::dispense('page'); $book->cover = $page; R::store($book); $book = $book->fresh(); asrt($book->getMeta('sys.autoresolved.cover'), NULL); $book->cover; asrt($book->getMeta('sys.autoresolved.cover'), 'page'); R::nuke(); $book = R::dispense('book'); $page = R::dispense('page'); $book->cover = $page; R::store($book); $book = $book->fresh(); asrt($book->getMeta('sys.autoresolved.cover'), NULL); $book->fetchAs('page')->cover; asrt($book->getMeta('sys.autoresolved.cover'), NULL); R::nuke(); R::aliases(array('cover' => 'page')); $book = R::dispense('book'); $page = R::dispense('page'); $book->cover = $page; R::store($book); $book = $book->fresh(); asrt($book->getMeta('sys.autoresolved.cover'), NULL); $cover = $book->cover; asrt($cover instanceof OODBBean, TRUE); asrt($cover->getMeta('type'), 'page'); asrt($book->getMeta('sys.autoresolved.cover'), NULL); R::aliases(array()); R::nuke(); R::setAutoResolve(FALSE); $book = R::dispense('book'); $page = R::dispense('page'); $book->cover = $page; R::store($book); $book = $book->fresh(); asrt($book->getMeta('sys.autoresolved.cover'), NULL); $book->cover; asrt($book->getMeta('sys.autoresolved.cover'), NULL); R::setAutoResolve(TRUE); }