/** * Type cast loaded data * @param array $data * @return array */ public function typeData(array $data) { $fields = $this->table->attrs(); foreach ($data as $key => $value) { if (array_key_exists($key, $fields)) { $data[$key] = $this->valueType($key, $fields[$key], $value, true); } } return $data; }
/** * Copy table * @param $db * @param $name * @return Table */ public function copyTable($name, $db = null, $temp = false) { if (!$temp && !$name) { throw new Exception('New table has no name'); } $db = $db ? $db : $this->db(); $name = $name ? $name : 'temp_' . substr(md5(microtime(true) . rand(1, 9999)), 0, 10); $table = new Table(); $table->connection($this->connection()); $table->db($db); $table->name($name); $table->attrs($this->attrs()); $table->rowClass = $this->rowClass; $builder = $table->builder(); $query = $builder->createTableLike($temp, $this->db(), $this->name()); $table->connection()->query($query); $builder = $this->builder(); $builder->columns(array('*')); $query = $builder->insertSelect($table->db(), $table->name()); $this->connection()->query($query); return $table; }