Declare a cursor with the Finder::declare_cursor() method and next get the cursor with get_cursor():
morm::Cursor<MyObject> cursor = finder.
declare_cursor("mycursorname").
select().
raw("ORDER BY column_name ASC").
get_cursor();
The cursor now can be used with fetch.*() methods and then get() or get_list():
MyObject myobject = cursor.fetch_next().get();
std::list<MyObject> myobjects = cursor.fetch_forward_count(10).get_list();
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"
The Finder has get_rows_counter() method which returns how many rows there were
before LIMIT clause was applied. The select(...) method should be called with
Select::with_rows_counter flag in such a case.
while here:
- change the semantic of Finder, now the select(...) method takes a morm::Select flags,
and we have such flags:
- Select::no_auto_generated_columns - do not generate columns from models
- with_rows_counter - add an additional column for the rows counter
- remove Finder::prepare_to_select() - now use select(...) with no_auto_generated_columns flag
those functions can be used with databases and flat files
- removed support for calling static function
- if MORM_HAS_EZC_LIBRARY macro is defined then we can call a function
which has a first argument Ezc::FunInfo<>& object
(only for generating flat files)
added: now we set flag save_mode = DO_NOTHING_ON_SAVE for objects for which
all fields from a database result set are null
git-svn-id: svn://ttmath.org/publicrep/morm/trunk@1210 e52654a7-88a9-db11-a3e9-0013d4bc506e
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
an additional field (model_save_mode) is printed
changed: if there is no an object the Cursor returns a Model with DO_NOTHING_ON_SAVE flag now
(DO_INSERT_ON_SAVE was beforehand)
fixed: when reading a result from db: for auto generated select there should be used
get_value_by_field_index() method instead of get_value_by_field_name()
changed: flat string (json) is generated only if a model has DO_INSERT_ON_SAVE
or DO_UPDATE_ON_SAVE or is dump_mode turn on
git-svn-id: svn://ttmath.org/publicrep/morm/trunk@1208 e52654a7-88a9-db11-a3e9-0013d4bc506e
fixed: when generating: insert, update or remove statements we have used prefixes for columns
but the table name was not set in ModelEnv (now we do not use prefixes in such statements)
changed: log_queries field moved from PostgreSQLConnector to DbConnector
git-svn-id: svn://ttmath.org/publicrep/morm/branches/join_models@1195 e52654a7-88a9-db11-a3e9-0013d4bc506e
- added FinderHelper class - used as a global object for the whole model tree in Finder
(some fields moved from ModelData)
- added CursorHelper class - used as a global object for the whole model tree in Cursor
(some fields moved from ModelData)
git-svn-id: svn://ttmath.org/publicrep/morm/branches/join_models@1192 e52654a7-88a9-db11-a3e9-0013d4bc506e
added: ModelEnv class - now Model has a pointer to ModelEnv
and ModelEnv has a pointer to ModelData, model_connector_mode, table_index and doc_field_pointer
git-svn-id: svn://ttmath.org/publicrep/morm/branches/join_models@1191 e52654a7-88a9-db11-a3e9-0013d4bc506e
added: using ModelData in BaseExpression so Model::to_text() functions can use a ModelData object now
git-svn-id: svn://ttmath.org/publicrep/morm/trunk@1175 e52654a7-88a9-db11-a3e9-0013d4bc506e