/**
  * Filter the query by a related Book object
  *
  * @param   Book|PropelObjectCollection $book  the related object to use as filter
  * @param     string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
  *
  * @return                 AuthorQuery The current query, for fluid interface
  * @throws PropelException - if the provided filter is invalid.
  */
 public function filterByBook($book, $comparison = null)
 {
     if ($book instanceof Book) {
         return $this->addUsingAlias(AuthorPeer::ID, $book->getAuthorId(), $comparison);
     } elseif ($book instanceof PropelObjectCollection) {
         return $this->useBookQuery()->filterByPrimaryKeys($book->getPrimaryKeys())->endUse();
     } else {
         throw new PropelException('filterByBook() only accepts arguments of type Book or PropelCollection');
     }
 }
예제 #2
0
 public function testSetAndGetObject()
 {
     // case 1: author object to be set is anonymous, book is saved
     $joyce = new Author();
     $joyce->setName('James Joyce');
     $joyce->setCreationDatetime(date('Y-m-d H:i:s'));
     $ulysses = new Book();
     $ulysses->setTitle('Ulysses');
     $ulysses->setIntroduction('1264 pages of bs by one of the masters.');
     $ulysses->setCreationDatetime(date('Y-m-d H:i:s'));
     $ulysses->save();
     $ulysses->setAuthor_Object($joyce);
     $this->assertReference($ulysses->getAuthor_Object(), $joyce);
     $ulysses->save();
     // $this->assertNotEqual($ulysses->getAuthorId(), $joyce->getAuthorId());
     // case 2: author object saved, book is saved
     $twain = new Author();
     $twain->setName('Mark Twain');
     $twain->setCreationDatetime(date('Y-m-d H:i:s'));
     $twain->save();
     $huckFinn = new Book();
     $huckFinn->setTitle('Huckleberry Finn');
     $huckFinn->setIntroduction('meh.');
     $huckFinn->setCreationDatetime(date('Y-m-d H:i:s'));
     $huckFinn->save();
     $huckFinn->setAuthor_Object($twain);
     $this->assertReference($huckFinn->getAuthor_Object(), $twain);
     $huckFinn->save();
     $this->assertNotEqual($huckFinn->getAuthorId(), $twain->getAuthorId());
     // case 3: author object is anonymous, book is anonymous
     $murakami = new Author();
     $murakami->setName('Haruki Murakami');
     $murakami->setCreationDatetime(date('Y-m-d H:i:s'));
     $windup = new Book();
     $windup->setTitle('The Wind Up Bird Chronicles');
     $windup->setIntroduction('trippy.');
     $windup->setCreationDatetime(date('Y-m-d H:i:s'));
     $windup->setAuthor_Object($murakami);
     $this->assertReference($windup->getAuthor_Object(), $murakami);
     $windup->save();
     // $this->assertNotEqual($windup->getAuthorId(), $murakami->getAuthorId());
     // case 4: author object is saved, book is anonymous
     $heinlein = new Author();
     $heinlein->setName('Robert A. Heinlein');
     $heinlein->setCreationDatetime(date('Y-m-d H:i:s'));
     $heinlein->save();
     $stranger = new Book();
     $stranger->setTitle('Stranger in a Strange Land');
     $stranger->setIntroduction('awesome');
     $stranger->setCreationDatetime(date('Y-m-d H:i:s'));
     $stranger->setAuthor_Object($heinlein);
     $this->assertReference($stranger->getAuthor_Object(), $heinlein);
     $stranger->save();
     $this->assertNotEqual($stranger->getAuthorId(), $heinlein->getAuthorId());
 }
 /**
  * Filter the query by a related Book object
  *
  * @param     Book $book  the related object to use as filter
  * @param     string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
  *
  * @return    AuthorQuery The current query, for fluid interface
  */
 public function filterByBook($book, $comparison = null)
 {
     return $this->addUsingAlias(AuthorPeer::ID, $book->getAuthorId(), $comparison);
 }