Automattic\WooCommerce\Database\Migrations
MetaToCustomTableMigrator::build_verification_query()
Generate query to fetch data from both source and destination tables. Use the results in verify_data to verify if data was migrated properly.
Метод класса: MetaToCustomTableMigrator{}
Хуков нет.
Возвращает
Строку
. SELECT statement.
Использование
// protected - в коде основоного (родительского) или дочернего класса $result = $this->build_verification_query( $source_ids );
- $source_ids(массив) (обязательный)
- Array of IDs in source table.
Код MetaToCustomTableMigrator::build_verification_query() MetaToCustomTableMigrator::build verification query WC 7.5.1
protected function build_verification_query( $source_ids ) { $source_table = $this->schema_config['source']['entity']['table_name']; $meta_table = $this->schema_config['source']['meta']['table_name']; $destination_table = $this->schema_config['destination']['table_name']; $meta_entity_id_column = $this->schema_config['source']['meta']['entity_id_column']; $meta_key_column = $this->schema_config['source']['meta']['meta_key_column']; $meta_value_column = $this->schema_config['source']['meta']['meta_value_column']; $destination_source_rel_column = $this->schema_config['destination']['source_rel_column']; $source_destination_rel_column = $this->schema_config['source']['entity']['destination_rel_column']; $source_meta_rel_column = $this->schema_config['source']['entity']['meta_rel_column']; $source_destination_join_clause = "$destination_table ON $destination_table.$destination_source_rel_column = $source_table.$source_destination_rel_column"; $meta_select_clauses = array(); $meta_join_clauses = array(); $source_select_clauses = array(); $destination_select_clauses = array(); foreach ( $this->core_column_mapping as $column_name => $schema ) { $source_select_column = isset( $schema['select_clause'] ) ? $schema['select_clause'] : "$source_table.$column_name"; $source_select_clauses[] = "$source_select_column as {$source_table}_{$column_name}"; $destination_select_clauses[] = "$destination_table.{$schema['destination']} as {$destination_table}_{$schema['destination']}"; } foreach ( $this->meta_column_mapping as $meta_key => $schema ) { $meta_table_alias = "meta_source_{$schema['destination']}"; $meta_select_clauses[] = "$meta_table_alias.$meta_value_column AS $meta_table_alias"; $meta_join_clauses[] = " $meta_table $meta_table_alias ON $meta_table_alias.$meta_entity_id_column = $source_table.$source_meta_rel_column AND $meta_table_alias.$meta_key_column = '$meta_key' "; $destination_select_clauses[] = "$destination_table.{$schema['destination']} as {$destination_table}_{$schema['destination']}"; } $select_clause = implode( ', ', array_merge( $source_select_clauses, $meta_select_clauses, $destination_select_clauses ) ); $meta_join_clause = implode( ' LEFT JOIN ', $meta_join_clauses ); $where_clause = $this->get_where_clause_for_verification( $source_ids ); return " SELECT $select_clause FROM $source_table LEFT JOIN $source_destination_join_clause LEFT JOIN $meta_join_clause WHERE $where_clause "; }