public static function getColumnId($name) { $name = trim($name); if (is_null(self::$_column_groups)) { self::$_column_groups = array(); foreach (ColumnGroup::search(1) as $group) { self::$_column_groups[$group->name] = $group->id; } } if (!array_key_exists($name, self::$_column_groups)) { self::$_column_groups[$name] = ColumnGroup::insert(array('name' => $name))->id; } return self::$_column_groups[$name]; }
$insert_unit = array(); foreach (ImportData::search(1)->order('no')->volumemode(10000) as $importdata) { $data = json_decode($importdata->data); // 只處理商業登記 if ('商業登記' !== $data->{'類型'}) { continue; } $insert_unit[] = "(" . intval($importdata->no) . ", 2, {$data->fetch_at})"; foreach ($data as $name => $value) { // 類型和商業統一編號不需要了 $name = trim($name); if (in_array($name, array('類型', '商業統一編號', 'fetch_at'))) { continue; } if (!($column_id = $columns[$name])) { $c = ColumnGroup::insert(array('name' => $name)); $column_id = $c->id; $columns[$name] = $column_id; } $insert_data[] = "(" . intval($importdata->no) . ", {$column_id}, " . $wdb->quoteWithColumn($table, json_encode($value, JSON_UNESCAPED_UNICODE), 'value') . ')'; } if (count($insert_data) > 1000) { $wdb->query("INSERT IGNORE INTO `unit_data` (`id`, `column_id`, `value`) VALUES " . implode(', ', $insert_data)); $wdb->query("INSERT IGNORE INTO `unit` (`id`, `type`, `updated_at`) VALUES " . implode(', ', $insert_unit)); $insert_unit = array(); $insert_data = array(); } /*var_dump($data); exit;*/ } if ($insert_data) {