fixed: get_value_by_field_name() is able to correctly take values when
we do not use auto generated 'select' and when we are using prefixes for columns git-svn-id: svn://ttmath.org/publicrep/morm/trunk@1209 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
33
src/cursor.h
33
src/cursor.h
@@ -61,6 +61,7 @@ public:
|
||||
model_connector = c.model_connector;
|
||||
model_data = c.model_data;
|
||||
has_autogenerated_select = c.has_autogenerated_select;
|
||||
use_table_prefix_for_fetching = c.use_table_prefix_for_fetching;
|
||||
query_result = c.query_result;
|
||||
select_status = c.select_status;
|
||||
|
||||
@@ -71,6 +72,7 @@ public:
|
||||
|
||||
// helper doesn't have to be copied
|
||||
cursor_helper.clear();
|
||||
finder_helper.clear();
|
||||
}
|
||||
|
||||
|
||||
@@ -99,10 +101,11 @@ public:
|
||||
model_connector = nullptr;
|
||||
model_data = nullptr;
|
||||
has_autogenerated_select = false;
|
||||
use_table_prefix_for_fetching = false;
|
||||
cursor_helper.clear();
|
||||
finder_helper.clear();
|
||||
query_result = nullptr;
|
||||
select_status = false;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -136,6 +139,12 @@ public:
|
||||
}
|
||||
|
||||
|
||||
virtual void use_table_prefix(bool use_table_prefix_for_fetching)
|
||||
{
|
||||
this->use_table_prefix_for_fetching = use_table_prefix_for_fetching;
|
||||
}
|
||||
|
||||
|
||||
virtual QueryResult * get_query_result()
|
||||
{
|
||||
return query_result;
|
||||
@@ -171,14 +180,22 @@ public:
|
||||
ModelEnv model_env_local;
|
||||
result.model_env = &model_env_local;
|
||||
result.model_env->cursor_helper = &cursor_helper;
|
||||
result.model_env->finder_helper = &finder_helper;
|
||||
|
||||
try
|
||||
{
|
||||
finder_helper.clear(); // at the moment used only for calculating table prefixes (indices)
|
||||
cursor_helper.clear();
|
||||
cursor_helper.query_result = query_result;
|
||||
cursor_helper.has_autogenerated_select = has_autogenerated_select;
|
||||
|
||||
cursor_helper.use_table_prefix_for_fetching_values = use_table_prefix_for_fetching;
|
||||
result.model_env->model_data = model_data;
|
||||
|
||||
if( !cursor_helper.has_autogenerated_select && cursor_helper.use_table_prefix_for_fetching_values )
|
||||
{
|
||||
result.prepare_table_names();
|
||||
}
|
||||
|
||||
result.before_select();
|
||||
res = select_status;
|
||||
|
||||
@@ -285,7 +302,9 @@ protected:
|
||||
ModelConnector * model_connector;
|
||||
ModelData * model_data;
|
||||
bool has_autogenerated_select;
|
||||
bool use_table_prefix_for_fetching;
|
||||
CursorHelper cursor_helper;
|
||||
FinderHelper finder_helper; // may CursorHelper and FinderHelper should be one class?
|
||||
QueryResult * query_result;
|
||||
bool select_status;
|
||||
|
||||
@@ -306,17 +325,27 @@ protected:
|
||||
|
||||
try
|
||||
{
|
||||
finder_helper.clear();
|
||||
|
||||
cursor_helper.clear();
|
||||
cursor_helper.query_result = query_result;
|
||||
cursor_helper.has_autogenerated_select = has_autogenerated_select;
|
||||
cursor_helper.use_table_prefix_for_fetching_values = use_table_prefix_for_fetching;
|
||||
|
||||
added_model.set_connector(model_connector);
|
||||
added_model.clear();
|
||||
|
||||
added_model.model_env = &model_env_local;
|
||||
added_model.model_env->cursor_helper = &cursor_helper;
|
||||
added_model.model_env->finder_helper = &finder_helper;
|
||||
added_model.set_save_mode(Model::DO_UPDATE_ON_SAVE); // IMPROVE ME check if there is a primary key
|
||||
added_model.model_env->model_data = model_data;
|
||||
|
||||
if( !cursor_helper.has_autogenerated_select && cursor_helper.use_table_prefix_for_fetching_values )
|
||||
{
|
||||
added_model.prepare_table_names();
|
||||
}
|
||||
|
||||
added_model.before_select();
|
||||
added_model.map_values_from_query();
|
||||
added_model.after_select();
|
||||
|
Reference in New Issue
Block a user