public function testGet() { $container = new \PandaBase\Record\DatabaseRecordContainer(array(new \PandaBase\Record\MixedRecord(array("val_1" => "a")), new \PandaBase\Record\MixedRecord(array("val_1" => "bs")), new \PandaBase\Record\MixedRecord(array("val_1" => "cd")), new MixedRecord(array("val_1" => "daa")), new MixedRecord(array("val_1" => "edddd")))); $this->assertEquals("a", $container[0]["val_1"]); $this->assertEquals("bs", $container->get(1)["val_1"]); }
/** * @expectedException \PandaBase\Exception\RecordValueNotExists */ public function testRightJoin() { $container1 = new DatabaseRecordContainer(array(new MixedRecord(array("val_1" => "a", "val_2" => 1)), new MixedRecord(array("val_1" => "b", "val_2" => 2)))); $container2 = new DatabaseRecordContainer(array(new MixedRecord(array("val_1" => "a", "val_3" => 3)), new MixedRecord(array("val_1" => "a", "val_3" => 4)), new MixedRecord(array("val_1" => "b", "val_3" => 3)))); $this->assertEquals(3, $container1->rightJoin("val_1", $container2)->size()); $container1 = new DatabaseRecordContainer(array(new MixedRecord(array("val_1" => "a", "val_2" => 1)), new MixedRecord(array("val_1" => "b", "val_2" => 2)), new MixedRecord(array("val_1" => "c", "val_2" => 2)))); $container2 = new DatabaseRecordContainer(array(new MixedRecord(array("val_1" => "a", "val_3" => 3)), new MixedRecord(array("val_1" => "a", "val_3" => 4)), new MixedRecord(array("val_1" => "b", "val_3" => 3)), new MixedRecord(array("val_1" => "c", "val_3" => 2)), new MixedRecord(array("val_1" => "w", "val_3" => 2)))); $res = $container1->rightJoin("val_1", $container2); $this->assertEquals(5, $res->size()); $valasd = $res[4]["val_2"]; }
public function rightJoin($key, DatabaseRecordContainer $container) { $newRecords = array(); $_this = $this; $container->foreachRecords(function (DatabaseRecord $record1) use($_this, &$newRecords, $key) { $foundMatch = false; $_this->foreachRecords(function (DatabaseRecord $record2) use($record1, &$newRecords, $key, &$foundMatch) { if ($record1[$key] == $record2[$key]) { $foundMatch = true; $newRecords[] = new MixedRecord($record1->setAll($record2->getAll())->getAll()); } }); if (!$foundMatch) { $row = array_fill_keys(array_merge(array_keys($record1->getAll()), array_keys($_this[0]->getAll())), null); $newRecord = new MixedRecord($row); $newRecords[] = $newRecord->setAll($record1->getAll()); } }); return new DatabaseRecordContainer($newRecords); }