fix: correctly use a table name when using Finder::use_table_prefix(true)
We cannot use aliases in the form of "tablename"."fieldname" - now it was changed to "tablename.fieldname". Sample how to get the id field, assuming the table name is 'mymodel'. mymodel = finder2. select(morm::Select::no_auto_generated_columns). use_table_prefix(true). raw("SELECT id AS \"mymodel.id\""). raw("FROM mymodel"). raw("WHERE id = 25"). get(); In addition, there was an error that the table name was not correctly set for the first object in the hierarchy - it was empty, e.g. ""."field_name"
This commit is contained in:
15
src/model.h
15
src/model.h
@@ -1477,13 +1477,18 @@ protected:
|
||||
|
||||
if( db_expression )
|
||||
{
|
||||
std::wstring table_field_name;
|
||||
pt::TextStream table_field_name_str;
|
||||
db_expression->alias_to_stream(table_field_name_str, model_env->table_name, model_env->table_index, field_name);
|
||||
|
||||
// CHECK ME not tested yet after changing to db_expression->table_with_index_and_field_to_stream()
|
||||
db_expression->table_with_index_and_field_to_stream(table_field_name_str, model_env->table_name, model_env->table_index, field_name, field_type);
|
||||
table_field_name_str.to_str(table_field_name);
|
||||
column_index = model_env->cursor_helper->query_result->get_column_index(table_field_name.c_str());
|
||||
if( table_field_name_str.size() < 256 )
|
||||
{
|
||||
wchar_t alias_name[256];
|
||||
|
||||
if( table_field_name_str.to_str(alias_name, sizeof(alias_name) / sizeof(wchar_t)) )
|
||||
{
|
||||
column_index = model_env->cursor_helper->query_result->get_column_index(alias_name);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
|
Reference in New Issue
Block a user