setAutoResolve() public static method

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
Esempio n. 1
0
 /**
  * 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);
 }