fixed table aliases
This commit is contained in:
@@ -203,8 +203,7 @@ public:
|
||||
}
|
||||
|
||||
template<class ContainerType>
|
||||
void on_has_many_to_many(const char *id, ContainerType &/*cont*/, const char *join_column, const char *inverse_join_column, const utils::foreign_attributes &attr)
|
||||
{
|
||||
void on_has_many_to_many(const char *id, ContainerType &/*cont*/, const char *join_column, const char *inverse_join_column, const utils::foreign_attributes &attr) {
|
||||
if (attr.fetch() != utils::fetch_type::EAGER) {
|
||||
return;
|
||||
}
|
||||
@@ -217,6 +216,11 @@ public:
|
||||
if (next != processed_tables_.end()) {
|
||||
return;
|
||||
}
|
||||
auto relation = processed_tables_.find(id);
|
||||
if (relation == processed_tables_.end()) {
|
||||
relation = processed_tables_.insert({id, std::make_shared<sql::table>(id, build_alias('t', ++table_index))}).first;
|
||||
}
|
||||
|
||||
table_info_stack_.push({info.value(), std::make_shared<sql::table>(info->get().name(), build_alias('t', ++table_index))});
|
||||
next = processed_tables_.insert({info->get().name(), table_info_stack_.top().table}).first;
|
||||
typename ContainerType::value_type::value_type obj;
|
||||
@@ -230,17 +234,16 @@ public:
|
||||
|
||||
append_join(
|
||||
sql::column{table_info_stack_.top().table, table_info_stack_.top().info.get().definition().primary_key()->name()},
|
||||
sql::column{std::make_shared<sql::table>(id), join_column}
|
||||
sql::column{relation->second, join_column}
|
||||
);
|
||||
append_join(
|
||||
sql::column{next->second, inverse_join_column},
|
||||
sql::column{std::make_shared<sql::table>(info->get().name()), pk->name()}
|
||||
sql::column{relation->second, inverse_join_column},
|
||||
sql::column{next->second, pk->name()}
|
||||
);
|
||||
}
|
||||
|
||||
template<class ContainerType>
|
||||
void on_has_many_to_many(const char *id, ContainerType &/*cont*/, const utils::foreign_attributes &attr)
|
||||
{
|
||||
void on_has_many_to_many(const char *id, ContainerType &/*cont*/, const utils::foreign_attributes &attr) {
|
||||
if (attr.fetch() != utils::fetch_type::EAGER) {
|
||||
return;
|
||||
}
|
||||
@@ -253,7 +256,13 @@ public:
|
||||
if (next != processed_tables_.end()) {
|
||||
return;
|
||||
}
|
||||
|
||||
auto relation = processed_tables_.find(id);
|
||||
if (relation == processed_tables_.end()) {
|
||||
relation = processed_tables_.insert({id, std::make_shared<sql::table>(id, build_alias('t', ++table_index))}).first;
|
||||
}
|
||||
table_info_stack_.push({info.value(), std::make_shared<sql::table>(info->get().name(), build_alias('t', ++table_index))});
|
||||
next = processed_tables_.insert({info->get().name(), table_info_stack_.top().table}).first;
|
||||
typename ContainerType::value_type::value_type obj;
|
||||
access::process(*this , obj);
|
||||
table_info_stack_.pop();
|
||||
@@ -267,11 +276,12 @@ public:
|
||||
|
||||
append_join(
|
||||
sql::column{table_info_stack_.top().table, table_info_stack_.top().info.get().definition().primary_key()->name()},
|
||||
sql::column{std::make_shared<sql::table>(id), join_columns.inverse_join_column}
|
||||
sql::column{relation->second, join_columns.inverse_join_column}
|
||||
);
|
||||
append_join(
|
||||
sql::column{std::make_shared<sql::table>(id), join_columns.join_column},
|
||||
sql::column{std::make_shared<sql::table>(info->get().name()), pk->name()}
|
||||
sql::column{relation->second, join_columns.join_column},
|
||||
sql::column{next->second, pk->name()}
|
||||
// sql::column{std::make_shared<sql::table>(info->get().name()), pk->name()}
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user