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']); }