/**
  * @link       http://propel.phpdb.org/trac/ticket/519
  */
 public function testDoDeleteCompositePK()
 {
     $con = Propel::getServiceContainer()->getConnection(BookTableMap::DATABASE_NAME);
     ReaderFavoriteTableMap::doDeleteAll();
     // Create books with IDs 1 to 3
     // Create readers with IDs 1 and 2
     $this->createBookWithId(1);
     $this->createBookWithId(2);
     $this->createBookWithId(3);
     $this->createReaderWithId(1);
     $this->createReaderWithId(2);
     for ($i = 1; $i <= 3; $i++) {
         for ($j = 1; $j <= 2; $j++) {
             $bo = new BookOpinion();
             $bo->setBookId($i);
             $bo->setReaderId($j);
             $bo->save();
             $rf = new ReaderFavorite();
             $rf->setBookId($i);
             $rf->setReaderId($j);
             $rf->save();
         }
     }
     $this->assertEquals(6, ReaderFavoriteQuery::create()->count());
     // Now delete 2 of those rows (2 is special in that it is the number of rows
     // being deleted, as well as the number of things in the primary key)
     ReaderFavoriteTableMap::doDelete(array(array(1, 1), array(2, 2)));
     $this->assertEquals(4, ReaderFavoriteQuery::create()->count());
     //Note: these composite PK's are pairs of (BookId, ReaderId)
     $this->assertNotNull(ReaderFavoriteQuery::create()->findPk(array(2, 1)));
     $this->assertNotNull(ReaderFavoriteQuery::create()->findPk(array(1, 2)));
     $this->assertNotNull(ReaderFavoriteQuery::create()->findPk(array(3, 1)));
     $this->assertNotNull(ReaderFavoriteQuery::create()->findPk(array(3, 2)));
     $this->assertNull(ReaderFavoriteQuery::create()->findPk(array(1, 1)));
     $this->assertNull(ReaderFavoriteQuery::create()->findPk(array(2, 2)));
     //test deletion of a single composite PK
     ReaderFavoriteTableMap::doDelete(array(3, 1));
     $this->assertEquals(3, ReaderFavoriteQuery::create()->count());
     $this->assertNotNull(ReaderFavoriteQuery::create()->findPk(array(2, 1)));
     $this->assertNotNull(ReaderFavoriteQuery::create()->findPk(array(1, 2)));
     $this->assertNotNull(ReaderFavoriteQuery::create()->findPk(array(3, 2)));
     $this->assertNull(ReaderFavoriteQuery::create()->findPk(array(1, 1)));
     $this->assertNull(ReaderFavoriteQuery::create()->findPk(array(2, 2)));
     $this->assertNull(ReaderFavoriteQuery::create()->findPk(array(3, 1)));
     //test deleting the last three
     ReaderFavoriteTableMap::doDelete(array(array(2, 1), array(1, 2), array(3, 2)));
     $this->assertEquals(0, ReaderFavoriteQuery::create()->count());
 }
 public function testFilterByFkCompositeKey()
 {
     BookstoreDataPopulator::depopulate();
     BookstoreDataPopulator::populate();
     BookstoreDataPopulator::populateOpinionFavorite();
     // prepare the test data
     $testOpinion = BookOpinionQuery::create()->innerJoin('BookOpinion.ReaderFavorite')->findOne();
     $testFavorite = $testOpinion->getReaderFavorite();
     $favorite = ReaderFavoriteQuery::create()->filterByBookOpinion($testOpinion)->findOne();
     $this->assertEquals($testFavorite, $favorite, 'Generated query handles filterByFk() methods correctly for composite fkeys');
 }
 /**
  * Testing foreign keys with multiple referrer columns.
  * @link       http://propel.phpdb.org/trac/ticket/606
  */
 public function testMultiColFk()
 {
     $con = Propel::getServiceContainer()->getConnection(BookTableMap::DATABASE_NAME);
     ReaderFavoriteTableMap::doDeleteAll();
     $b1 = new Book();
     $b1->setTitle("Book1");
     $b1->setISBN("ISBN-1");
     $b1->save();
     $r1 = new BookReader();
     $r1->setName("Me");
     $r1->save();
     $bo1 = new BookOpinion();
     $bo1->setBookId($b1->getId());
     $bo1->setReaderId($r1->getId());
     $bo1->setRating(9);
     $bo1->setRecommendToFriend(true);
     $bo1->save();
     $rf1 = new ReaderFavorite();
     $rf1->setReaderId($r1->getId());
     $rf1->setBookId($b1->getId());
     $rf1->save();
     $c = new Criteria(ReaderFavoriteTableMap::DATABASE_NAME);
     $c->add(ReaderFavoriteTableMap::BOOK_ID, $b1->getId());
     $c->add(ReaderFavoriteTableMap::READER_ID, $r1->getId());
     $results = ReaderFavoriteQuery::create(null, $c)->joinWith('BookOpinion')->find();
     $this->assertEquals(1, count($results), "Expected 1 result");
 }