public function testMultipleHasManysToTheSameModel()
 {
     $ppp1 = new PPP();
     $ppp1->name = 'ppp1';
     $ppp1->save();
     $this->assertTrue($ppp1->save());
     $ppp2 = new PPP();
     $ppp2->name = 'ppp2';
     $this->assertTrue($ppp2->save());
     $ppp3 = new PPP();
     $ppp3->name = 'ppp3';
     $this->assertTrue($ppp3->save());
     $p = new P();
     $p->name = 'name2';
     $p->ppp->add($ppp1);
     $p->ppp1->add($ppp2);
     $p->ppp2->add($ppp3);
     $this->assertTrue($p->save());
     //Retrieve row to make sure columns are correct
     $row = ZurmoRedBean::getRow('select * from p where id =' . $p->id);
     $this->assertTrue(isset($row['id']) && ($row['id'] = $p->id));
     $this->assertEquals(null, $row['pp_id']);
     $this->assertEquals(null, $row['pp1link_pp_id']);
     $this->assertEquals(null, $row['pp2link_pp_id']);
     $this->assertCount(5, $row);
     $row = ZurmoRedBean::getRow('select * from ppp where id =' . $ppp1->id);
     $this->assertTrue(isset($row['id']) && ($row['id'] = $ppp1->id));
     $this->assertTrue(isset($row['name']) && ($row['name'] = 'ppp1'));
     $this->assertTrue(isset($row['p_id']) && ($row['p_id'] = $p->id));
     $this->assertEquals(null, $row['ppp1link_p_id']);
     $this->assertEquals(null, $row['ppp2link_p_id']);
     $this->assertCount(5, $row);
     $row = ZurmoRedBean::getRow('select * from ppp where id =' . $ppp2->id);
     $this->assertTrue(isset($row['id']) && ($row['id'] = $ppp2->id));
     $this->assertTrue(isset($row['name']) && ($row['name'] = 'ppp2'));
     $this->assertEquals(null, $row['p_id']);
     $this->assertTrue(isset($row['ppp1link_p_id']) && ($row['ppp1link_p_id'] = $p->id));
     $this->assertEquals(null, $row['ppp2link_p_id']);
     $this->assertCount(5, $row);
     $row = ZurmoRedBean::getRow('select * from ppp where id =' . $ppp3->id);
     $this->assertTrue(isset($row['id']) && ($row['id'] = $ppp3->id));
     $this->assertTrue(isset($row['name']) && ($row['name'] = 'ppp3'));
     $this->assertEquals(null, $row['p_id']);
     $this->assertEquals(null, $row['ppp1link_p_id']);
     $this->assertTrue(isset($row['ppp2link_p_id']) && ($row['ppp2link_p_id'] = $p->id));
     $this->assertCount(5, $row);
     $pId = $p->id;
     $ppp1Id = $ppp1->id;
     $ppp2Id = $ppp2->id;
     $ppp3Id = $ppp3->id;
     $p->forget();
     $ppp1->forget();
     $ppp2->forget();
     $ppp3->forget();
     $p = P::getById($pId);
     $this->assertEquals(1, $p->ppp->count());
     $this->assertEquals(1, $p->ppp1->count());
     $this->assertEquals(1, $p->ppp2->count());
     $this->assertEquals($ppp1Id, $p->ppp[0]->id);
     $this->assertEquals($ppp2Id, $p->ppp1[0]->id);
     $this->assertEquals($ppp3Id, $p->ppp2[0]->id);
     //Unlink relationships to make sure they are removed properly
     $p->ppp->remove(PPP::getById($ppp1Id));
     $p->ppp1->remove(PPP::getById($ppp2Id));
     $p->ppp2->remove(PPP::getById($ppp3Id));
     $saved = $p->save();
     $this->assertTrue($saved);
     //test rows are empty..
     $row = ZurmoRedBean::getRow('select * from ppp where id =' . $ppp1->id);
     $this->assertTrue(isset($row['id']) && ($row['id'] = $ppp1->id));
     $this->assertTrue(isset($row['name']) && ($row['name'] = 'ppp1'));
     $this->assertEquals(null, $row['p_id']);
     $this->assertEquals(null, $row['ppp1link_p_id']);
     $this->assertEquals(null, $row['ppp2link_p_id']);
     $row = ZurmoRedBean::getRow('select * from ppp where id =' . $ppp2->id);
     $this->assertTrue(isset($row['id']) && ($row['id'] = $ppp2->id));
     $this->assertTrue(isset($row['name']) && ($row['name'] = 'ppp2'));
     $this->assertEquals(null, $row['p_id']);
     $this->assertEquals(null, $row['ppp1link_p_id']);
     $this->assertEquals(null, $row['ppp2link_p_id']);
     $row = ZurmoRedBean::getRow('select * from ppp where id =' . $ppp3->id);
     $this->assertTrue(isset($row['id']) && ($row['id'] = $ppp3->id));
     $this->assertTrue(isset($row['name']) && ($row['name'] = 'ppp3'));
     $this->assertEquals(null, $row['p_id']);
     $this->assertEquals(null, $row['ppp1link_p_id']);
     $this->assertEquals(null, $row['ppp2link_p_id']);
 }