/** * Mass Bean Export function. * Exports all beans specified in the first argument. * * @static * @param array $beans collection of beans to be exported * * @return array Array containing sub-arrays representing beans */ public static function exportAll($beans, $recursively = false) { if ($recursively) { if (!self::$exporter) { self::$exporter = new RedBean_Plugin_BeanExport(self::$toolbox); self::$exporter->loadSchema(); } return self::$exporter->export($beans); } else { $array = array(); foreach ($beans as $bean) { if ($bean instanceof RedBean_OODBBean) { $array[] = $bean->export(); } } return $array; } }
$v3 = R::load('village', $v3->getID()); class ExportBeanFormatter extends RedBean_DefaultBeanFormatter { public function getAlias($type) { if ($type == 'universe') { return 'world'; } else { return $type; } } } R::$toolbox->getWriter()->setBeanFormatter(new ExportBeanFormatter()); $e->loadSchema(); //print_r($e->export($v2)); $export = $e->export($v2); $out = json_encode($export); $expected = '{"2":{"id":"2","name":"Sandy winds","world_id":null,"universe_id":"1","universe":{"1":{"id":"1","name":"Middle Earth","ownVillage":{"1":{"id":"1","name":"Ole Town","world_id":"1","universe_id":null,"world":{"1":null},"ownBuilding":{"1":{"id":"1","kind":"pub","village_id":"1","village":{"1":null},"ownAmulet":{"1":{"id":"1","name":"4","building_id":"1","building":{"1":null}}}},"2":{"id":"2","kind":"tower","village_id":"1","village":{"1":null},"ownAmulet":[]}},"sharedArmy":[]}}}},"ownBuilding":{"3":{"id":"3","kind":"mill","village_id":"2","village":{"2":null},"ownAmulet":[]},"4":{"id":"4","kind":"shed","village_id":"2","village":{"2":null},"ownAmulet":[]},"5":{"id":"5","kind":"shop","village_id":"2","village":{"2":null},"ownAmulet":{"2":{"id":"2","name":"3","building_id":"5","building":{"5":null}}}}},"sharedArmy":{"1":{"id":"1","name":"Army 1","sharedVillage":{"2":null}},"2":{"id":"2","name":"Army 2","sharedVillage":{"2":null,"3":{"id":"3","name":"Autumn Hill","world_id":null,"universe_id":null,"ownBuilding":{"6":{"id":"6","kind":"farm","village_id":"3","village":{"3":null},"ownAmulet":{"3":{"id":"3","name":"1","building_id":"6","building":{"6":null}},"4":{"id":"4","name":"2","building_id":"6","building":{"6":null}}}}},"sharedArmy":{"2":null}}}}}}}'; asrt(preg_replace("/\\W/", "", trim($out)), preg_replace("/\\W/", "", trim($expected))); $export = R::exportAll($v2, true); $out = json_encode($export); asrt(preg_replace("/\\W/", "", trim($out)), preg_replace("/\\W/", "", trim($expected))); testpack('Test foreign keys'); droptables(); $book = R::dispense('book'); $page = R::dispense('page'); $cover = R::dispense('cover'); list($g1, $g2) = R::dispense('genre', 2); $g1->name = '1'; $g2->name = '2'; $book->ownPage = array($page);