/** * Populates the given DatabaseObject with dummy data * * @param DatabaseObject $obj * @return void */ protected function populate(DatabaseObject &$obj) { $meta = $obj->meta(); $key = $meta->getKey(); $fields = $meta->getColumnMap(); foreach ($fields as $property => $field) { if ($field == $key && isset($obj->{$property})) { continue; } $def = $meta->getColumnDefinition($field); $type = strtolower(Params::generic($def, 'native_type')); switch ($type) { case 'int': case 'integer': case 'float': case 'currency': case 'decimal': case 'double': case 'real': case 'tinyint': case 'short': case 'long': $obj->{$property} = mt_rand(0, 100); break; case 'date': case 'datetime': case 'timestamp': // Fuzz two weeks around now $window = 1209600; // 14 days * 24 hours * 60 minutes * 60 seconds $time = time() - $window / 2 + mt_rand(0, $window); if ($type == 'date') { $lt = localtime($time, true); $time = mktime(0, 0, 0, $lt['tm_mday'], $lt['tm_mon'] + 1, $lt['tm_year'] + 1900); $lt = null; } $obj->{$property} = $time; break; case 'time': // range is +- 838:59:59, but since this populate thing // isn't really all it could be anyhow, let's just do // positive values $obj->{$property} = mt_rand(1, 839 * 60 * 60 - 1); break; case 'var_string': $obj->{$property} = 'dummy string content ' . uniqid(); break; default: $obj->{$property} = uniqid(); break; } } }
public function joinObject(DatabaseObject $dboA, DatabaseObject $dboB, $keyA = null, $keyB = null) { $metaA = $dboA->meta(); $metaB = $dboB->meta(); $tableA = $metaA->getTable(); $tableB = $metaB->getTable(); if (!$keyA) { $keyA = $metaA->getKey(); } if (!$keyB) { $keyB = $keyA; } $sql = "INNER JOIN `{$tableB}` ON `{$tableB}`.`{$keyB}` = `{$tableA}`.`{$keyA}`"; array_push($this->joins, $sql); }