QxOrm
1.5.0
C++ Object Relational Mapping library
|
qx::QxModel<T, B> : all classes registered into QxOrm context can be used with Qt model/view architecture (Qt widgets and/or QML views) More...
#include <QxModel.h>
Public Types | |
enum | { qx_is_valid = (qx::trait::is_qx_registered<T>::value && std::is_base_of<qx::IxModel, B>::value) } |
typedef std::shared_ptr< T > | type_ptr |
typedef qx::trait::get_primary_key< T > ::type | type_primary_key |
typedef qx::QxCollection < type_primary_key, type_ptr > | type_collection |
typedef B | type_base_class |
Public Member Functions | |
QxModel (QObject *parent=0) | |
QxModel (qx::IxModel *other, QObject *parent) | |
virtual | ~QxModel () |
virtual bool | insertRows (int row, int count, const QModelIndex &parent=QModelIndex()) |
virtual void | sort (int column, Qt::SortOrder order=Qt::AscendingOrder) |
virtual bool | getShowEmptyLine () const |
virtual void | setShowEmptyLine (bool b) |
virtual long | qxCount (const qx::QxSqlQuery &query=qx::QxSqlQuery(), QSqlDatabase *pDatabase=NULL) |
Return the number of lines in the table (database) mapped to the C++ class T (registered into QxOrm context) and filtered by a user SQL query. | |
virtual QSqlError | qxCount (long &lCount, const qx::QxSqlQuery &query=qx::QxSqlQuery(), QSqlDatabase *pDatabase=NULL) |
Return the number of lines in the table (database) mapped to the C++ class T (registered into QxOrm context) and filtered by a user SQL query. | |
virtual QSqlError | qxFetchById (const QVariant &id, const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL) |
Clear the model and fetch an object (retrieve all its properties) of type T (registered into QxOrm context) mapped to a table in the database. | |
virtual QSqlError | qxFetchAll (const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL) |
Clear the model and fetch a list of objects (retrieve all elements and properties associated) of type T (container registered into QxOrm context) mapped to a table in the database. | |
virtual QSqlError | qxFetchByQuery (const qx::QxSqlQuery &query, const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL) |
Clear the model and fetch a list of objects (retrieve all elements and properties associated) of type T (container registered into QxOrm context) mapped to a table in the database and filtered by a user SQL query. | |
virtual QSqlError | qxFetchRow (int row, const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL) |
Get an item in the model at line row and fetch all its properties mapped to a table in the database, then all views attached to this model are automatically updated. | |
virtual QSqlError | qxInsert (const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL, bool bUseExecBatch=false) |
Insert all items in the model into database. | |
virtual QSqlError | qxInsertRow (int row, const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL) |
Insert an item of the model at line row into database. | |
virtual QSqlError | qxUpdate (const qx::QxSqlQuery &query=qx::QxSqlQuery(), const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL, bool bUseExecBatch=false) |
Update all items in the model into database. | |
virtual QSqlError | qxUpdateRow (int row, const qx::QxSqlQuery &query=qx::QxSqlQuery(), const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL) |
Update an item of the model at line row into database. | |
virtual QSqlError | qxSave (const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL) |
Save all items (insert or update) in the model into database. | |
virtual QSqlError | qxSaveRow (int row, const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL) |
Save an item of the model at line row into database. | |
virtual QSqlError | qxSaveRowData (int row, const QStringList &column=QStringList(), QSqlDatabase *pDatabase=NULL) |
Used internally by qx::IxModel::setData() method with e_auto_update_on_field_change option, save an item (even if it is the dirty row item) of the model at line row into database. | |
virtual QSqlError | qxDeleteById (const QVariant &id, QSqlDatabase *pDatabase=NULL) |
Delete a line of a table (database) mapped to a C++ object of type T (registered into QxOrm context), if no error occurred then you should remove row from the model. | |
virtual QSqlError | qxDeleteAll (QSqlDatabase *pDatabase=NULL) |
Delete all lines of a table (database) mapped to a C++ class T (registered into QxOrm context), if no error occurred then you should clear the model. | |
virtual QSqlError | qxDeleteByQuery (const qx::QxSqlQuery &query, QSqlDatabase *pDatabase=NULL) |
Delete all lines of a table (database) mapped to a C++ class T (registered into QxOrm context) and filtered by a user SQL query, if no error occurred then you should refresh the model. | |
virtual QSqlError | qxDeleteRow (int row, QSqlDatabase *pDatabase=NULL) |
Delete in database the item at line row in the model, if no error occurred then you should remove row from the model. | |
virtual QSqlError | qxDestroyById (const QVariant &id, QSqlDatabase *pDatabase=NULL) |
Delete a line of a table (even if a logical delete is defined) mapped to a C++ object of type T (registered into QxOrm context), if no error occurred then you should remove row from the model. | |
virtual QSqlError | qxDestroyAll (QSqlDatabase *pDatabase=NULL) |
Delete all lines of a table (even if a logical delete is defined) mapped to a C++ class T (registered into QxOrm context), if no error occurred then you should clear the model. | |
virtual QSqlError | qxDestroyByQuery (const qx::QxSqlQuery &query, QSqlDatabase *pDatabase=NULL) |
Delete all lines of a table (even if a logical delete is defined) mapped to a C++ class T (registered into QxOrm context) and filtered by a user SQL query, if no error occurred then you should refresh the model. | |
virtual QSqlError | qxDestroyRow (int row, QSqlDatabase *pDatabase=NULL) |
Delete in database (even if a logical delete is defined) the item at line row in the model, if no error occurred then you should remove row from the model. | |
virtual QSqlError | qxExecuteQuery (qx::QxSqlQuery &query, QSqlDatabase *pDatabase=NULL) |
virtual qx_bool | qxExist (const QVariant &id, QSqlDatabase *pDatabase=NULL) |
virtual qx::QxInvalidValueX | qxValidate (const QStringList &groups=QStringList()) |
virtual qx::QxInvalidValueX | qxValidateRow (int row, const QStringList &groups=QStringList()) |
Protected Member Functions | |
void | init () |
void | initFrom (qx::IxModel *pOther) |
type_ptr | getRowItemAt (int row) const |
virtual void * | getRowItemAsVoidPtr (int row) const |
virtual void | dumpModelImpl (bool bJsonFormat) const |
virtual QObject * | cloneModelImpl () |
virtual void | updateShowEmptyLine () |
virtual bool | isDirtyRow (int row) const |
virtual void | insertDirtyRowToModel () |
void | addDirtyRow () |
void | insertItem (int row, const type_ptr &pItem) |
void | updateKey (int row) |
void | updateAllKeys () |
virtual QString | toJson_Helper (int row) const |
virtual bool | fromJson_Helper (const QString &json, int row) |
virtual QVariant | getRelationshipValues_Helper (int row, const QString &relation, bool bLoadFromDatabase, const QString &sAppendRelations) |
virtual bool | setRelationshipValues_Helper (int row, const QString &relation, const QVariant &values) |
Protected Attributes | |
type_collection | m_model |
Model associated to a class registered into QxOrm context. | |
std::shared_ptr< QPair< int, type_ptr > > | m_pDirtyRow |
When displayed in a QTableView, this will cause an empty line awaiting user input to be displayed at the bottom (enabled with setShowEmptyLine() method) | |
Friends | |
struct | qx::model_view::detail::QxNestedModel |
struct | qx::model_view::detail::QxNestedModel_Generic |
struct | qx::model_view::detail::QxNestedModel_Container |
qx::QxModel<T, B> : all classes registered into QxOrm context can be used with Qt model/view architecture (Qt widgets and/or QML views)
QxModelView module provides an easy way to work with Qt model/view engine with all classes registered into QxOrm context :
qx::IxModel interface provides a generic way for all models linked to persistents classes registered into QxOrm context. All methods of this class prefixed by qx call functions from qx::dao namespace and then communicate with database.
The qxBlogModelView sample project in ./test/ directory of QxOrm package shows how to create quickly a model and associate it to the Qt model/view engine (first with a Qt widget, then with a QML view).
1- Here is an example to display/modify data from 'author' table (go to qxBlog tutorial for 'author' class definition) in a QTableView :
// Create a model and fetch all data from database qx::IxModel * pModel = new qx::QxModel<author>(); pModel->qxFetchAll(); // Associate the model to a QTableView and display it QTableView tableView; tableView.setModel(pModel); tableView.show();
2- Here is another example in QML (with Qt5, QxModelView module works fine with Qt4 too) :
// Create a model and fetch all data from database qx::IxModel * pModel = new qx::QxModel<author>(); pModel->qxFetchAll(); // Associate the model to a QML view and display it QQuickView qmlView; qmlView.rootContext()->setContextProperty("myModel", pModel); qmlView.setSource(QUrl("qrc:/documents/main.qml")); qmlView.show();
And here is the 'main.qml' file content :
import QtQuick 2.1 import QtQuick.Controls 1.0 Item { width: 400 height: 300 Row { height: 20 spacing: 20 Button { text: "Clear" onClicked: myModel.clear() } Button { text: "Fetch All" onClicked: myModel.qxFetchAll_() } Button { text: "Save" onClicked: myModel.qxSave_() } } ListView { y: 30 height: 270 model: myModel delegate: Row { height: 20 spacing: 10 Text { text: "id: " + author_id } TextField { text: name onTextChanged: name = text } } } }
As you can see in the 'main.qml' file, 'author_id' and 'name' properties of 'author' model ('myModel' variable) can be automatically read and write (because they are registered into QxOrm context). Moreover, qx::IxModel interface provides a list of methods for QML side (Q_INVOKABLE) to communicate with database : for example, the 'Save' button will save the model in database without having to write a C++ function.
Note : a QxEntityEditor plugin generates automatically the code to manage models with relationships. Then it is possible to work with nested C++ models.
typedef B qx::QxModel< T, B >::type_base_class |
Reimplemented in qx::QxModelService< T, S, B >.
typedef qx::QxCollection<type_primary_key, type_ptr> qx::QxModel< T, B >::type_collection |
Reimplemented in qx::QxModelService< T, S, B >.
typedef qx::trait::get_primary_key<T>::type qx::QxModel< T, B >::type_primary_key |
Reimplemented in qx::QxModelService< T, S, B >.
typedef std::shared_ptr<T> qx::QxModel< T, B >::type_ptr |
Reimplemented in qx::QxModelService< T, S, B >.
anonymous enum |
qx::QxModel< T, B >::QxModel | ( | QObject * | parent = 0 | ) | [inline] |
qx::QxModel< T, B >::QxModel | ( | qx::IxModel * | other, |
QObject * | parent | ||
) | [inline] |
virtual qx::QxModel< T, B >::~QxModel | ( | ) | [inline, virtual] |
void qx::QxModel< T, B >::addDirtyRow | ( | ) | [inline, protected] |
virtual QObject* qx::QxModel< T, B >::cloneModelImpl | ( | ) | [inline, protected, virtual] |
virtual void qx::QxModel< T, B >::dumpModelImpl | ( | bool | bJsonFormat | ) | const [inline, protected, virtual] |
virtual bool qx::QxModel< T, B >::fromJson_Helper | ( | const QString & | json, |
int | row | ||
) | [inline, protected, virtual] |
virtual QVariant qx::QxModel< T, B >::getRelationshipValues_Helper | ( | int | row, |
const QString & | relation, | ||
bool | bLoadFromDatabase, | ||
const QString & | sAppendRelations | ||
) | [inline, protected, virtual] |
Reimplemented in qx::QxModelService< T, S, B >.
virtual void* qx::QxModel< T, B >::getRowItemAsVoidPtr | ( | int | row | ) | const [inline, protected, virtual] |
type_ptr qx::QxModel< T, B >::getRowItemAt | ( | int | row | ) | const [inline, protected] |
virtual bool qx::QxModel< T, B >::getShowEmptyLine | ( | ) | const [inline, virtual] |
void qx::QxModel< T, B >::init | ( | ) | [inline, protected] |
void qx::QxModel< T, B >::initFrom | ( | qx::IxModel * | pOther | ) | [inline, protected] |
virtual void qx::QxModel< T, B >::insertDirtyRowToModel | ( | ) | [inline, protected, virtual] |
void qx::QxModel< T, B >::insertItem | ( | int | row, |
const type_ptr & | pItem | ||
) | [inline, protected] |
virtual bool qx::QxModel< T, B >::insertRows | ( | int | row, |
int | count, | ||
const QModelIndex & | parent = QModelIndex() |
||
) | [inline, virtual] |
virtual bool qx::QxModel< T, B >::isDirtyRow | ( | int | row | ) | const [inline, protected, virtual] |
virtual long qx::QxModel< T, B >::qxCount | ( | const qx::QxSqlQuery & | query = qx::QxSqlQuery() , |
QSqlDatabase * | pDatabase = NULL |
||
) | [inline, virtual] |
Return the number of lines in the table (database) mapped to the C++ class T (registered into QxOrm context) and filtered by a user SQL query.
query | Define a user SQL query added to default SQL query builded by QxOrm library (optional parameter) |
pDatabase | Connection to database (you can manage your own connection pool for example, you can also define a transaction, etc.); if NULL, a valid connection for the current thread is provided by qx::QxSqlDatabase singleton class (optional parameter) |
Reimplemented in qx::QxModelService< T, S, B >.
virtual QSqlError qx::QxModel< T, B >::qxCount | ( | long & | lCount, |
const qx::QxSqlQuery & | query = qx::QxSqlQuery() , |
||
QSqlDatabase * | pDatabase = NULL |
||
) | [inline, virtual] |
Return the number of lines in the table (database) mapped to the C++ class T (registered into QxOrm context) and filtered by a user SQL query.
lCount | Output parameter with the number of lines in the table associated to the SQL query |
query | Define a user SQL query added to default SQL query builded by QxOrm library (optional parameter) |
pDatabase | Connection to database (you can manage your own connection pool for example, you can also define a transaction, etc.); if NULL, a valid connection for the current thread is provided by qx::QxSqlDatabase singleton class (optional parameter) |
Reimplemented in qx::QxModelService< T, S, B >.
virtual QSqlError qx::QxModel< T, B >::qxDeleteAll | ( | QSqlDatabase * | pDatabase = NULL | ) | [inline, virtual] |
Delete all lines of a table (database) mapped to a C++ class T (registered into QxOrm context), if no error occurred then you should clear the model.
pDatabase | Connection to database (you can manage your own connection pool for example, you can also define a transaction, etc.); if NULL, a valid connection for the current thread is provided by qx::QxSqlDatabase singleton class (optional parameter) |
Reimplemented in qx::QxModelService< T, S, B >.
virtual QSqlError qx::QxModel< T, B >::qxDeleteById | ( | const QVariant & | id, |
QSqlDatabase * | pDatabase = NULL |
||
) | [inline, virtual] |
Delete a line of a table (database) mapped to a C++ object of type T (registered into QxOrm context), if no error occurred then you should remove row from the model.
id | Row id to be deleted from database |
pDatabase | Connection to database (you can manage your own connection pool for example, you can also define a transaction, etc.); if NULL, a valid connection for the current thread is provided by qx::QxSqlDatabase singleton class (optional parameter) |
Reimplemented in qx::QxModelService< T, S, B >.
virtual QSqlError qx::QxModel< T, B >::qxDeleteByQuery | ( | const qx::QxSqlQuery & | query, |
QSqlDatabase * | pDatabase = NULL |
||
) | [inline, virtual] |
Delete all lines of a table (database) mapped to a C++ class T (registered into QxOrm context) and filtered by a user SQL query, if no error occurred then you should refresh the model.
query | Define a user SQL query added to default SQL query builded by QxOrm library |
pDatabase | Connection to database (you can manage your own connection pool for example, you can also define a transaction, etc.); if NULL, a valid connection for the current thread is provided by qx::QxSqlDatabase singleton class (optional parameter) |
Reimplemented in qx::QxModelService< T, S, B >.
virtual QSqlError qx::QxModel< T, B >::qxDeleteRow | ( | int | row, |
QSqlDatabase * | pDatabase = NULL |
||
) | [inline, virtual] |
Delete in database the item at line row in the model, if no error occurred then you should remove row from the model.
row | Delete in database the item in the model at line row |
pDatabase | Connection to database (you can manage your own connection pool for example, you can also define a transaction, etc.); if NULL, a valid connection for the current thread is provided by qx::QxSqlDatabase singleton class (optional parameter) |
Reimplemented in qx::QxModelService< T, S, B >.
virtual QSqlError qx::QxModel< T, B >::qxDestroyAll | ( | QSqlDatabase * | pDatabase = NULL | ) | [inline, virtual] |
Delete all lines of a table (even if a logical delete is defined) mapped to a C++ class T (registered into QxOrm context), if no error occurred then you should clear the model.
pDatabase | Connection to database (you can manage your own connection pool for example, you can also define a transaction, etc.); if NULL, a valid connection for the current thread is provided by qx::QxSqlDatabase singleton class (optional parameter) |
Reimplemented in qx::QxModelService< T, S, B >.
virtual QSqlError qx::QxModel< T, B >::qxDestroyById | ( | const QVariant & | id, |
QSqlDatabase * | pDatabase = NULL |
||
) | [inline, virtual] |
Delete a line of a table (even if a logical delete is defined) mapped to a C++ object of type T (registered into QxOrm context), if no error occurred then you should remove row from the model.
id | Row id to be deleted from database |
pDatabase | Connection to database (you can manage your own connection pool for example, you can also define a transaction, etc.); if NULL, a valid connection for the current thread is provided by qx::QxSqlDatabase singleton class (optional parameter) |
Reimplemented in qx::QxModelService< T, S, B >.
virtual QSqlError qx::QxModel< T, B >::qxDestroyByQuery | ( | const qx::QxSqlQuery & | query, |
QSqlDatabase * | pDatabase = NULL |
||
) | [inline, virtual] |
Delete all lines of a table (even if a logical delete is defined) mapped to a C++ class T (registered into QxOrm context) and filtered by a user SQL query, if no error occurred then you should refresh the model.
query | Define a user SQL query added to default SQL query builded by QxOrm library |
pDatabase | Connection to database (you can manage your own connection pool for example, you can also define a transaction, etc.); if NULL, a valid connection for the current thread is provided by qx::QxSqlDatabase singleton class (optional parameter) |
Reimplemented in qx::QxModelService< T, S, B >.
virtual QSqlError qx::QxModel< T, B >::qxDestroyRow | ( | int | row, |
QSqlDatabase * | pDatabase = NULL |
||
) | [inline, virtual] |
Delete in database (even if a logical delete is defined) the item at line row in the model, if no error occurred then you should remove row from the model.
row | Delete in database the item in the model at line row |
pDatabase | Connection to database (you can manage your own connection pool for example, you can also define a transaction, etc.); if NULL, a valid connection for the current thread is provided by qx::QxSqlDatabase singleton class (optional parameter) |
Reimplemented in qx::QxModelService< T, S, B >.
virtual QSqlError qx::QxModel< T, B >::qxExecuteQuery | ( | qx::QxSqlQuery & | query, |
QSqlDatabase * | pDatabase = NULL |
||
) | [inline, virtual] |
Reimplemented in qx::QxModelService< T, S, B >.
virtual qx_bool qx::QxModel< T, B >::qxExist | ( | const QVariant & | id, |
QSqlDatabase * | pDatabase = NULL |
||
) | [inline, virtual] |
Reimplemented in qx::QxModelService< T, S, B >.
virtual QSqlError qx::QxModel< T, B >::qxFetchAll | ( | const QStringList & | relation = QStringList() , |
QSqlDatabase * | pDatabase = NULL |
||
) | [inline, virtual] |
Clear the model and fetch a list of objects (retrieve all elements and properties associated) of type T (container registered into QxOrm context) mapped to a table in the database.
relation | List of relationships keys to be fetched (eager fetch instead of default lazy fetch for a relation) : use "|" separator to put many relationships keys into this parameter |
pDatabase | Connection to database (you can manage your own connection pool for example, you can also define a transaction, etc.); if NULL, a valid connection for the current thread is provided by qx::QxSqlDatabase singleton class (optional parameter) |
Reimplemented in qx::QxModelService< T, S, B >.
virtual QSqlError qx::QxModel< T, B >::qxFetchById | ( | const QVariant & | id, |
const QStringList & | relation = QStringList() , |
||
QSqlDatabase * | pDatabase = NULL |
||
) | [inline, virtual] |
Clear the model and fetch an object (retrieve all its properties) of type T (registered into QxOrm context) mapped to a table in the database.
id | Row id to be fetched (retrieve all properties from database) |
relation | List of relationships keys to be fetched (eager fetch instead of default lazy fetch for a relation) : use "|" separator to put many relationships keys into this parameter |
pDatabase | Connection to database (you can manage your own connection pool for example, you can also define a transaction, etc.); if NULL, a valid connection for the current thread is provided by qx::QxSqlDatabase singleton class (optional parameter) |
Reimplemented in qx::QxModelService< T, S, B >.
virtual QSqlError qx::QxModel< T, B >::qxFetchByQuery | ( | const qx::QxSqlQuery & | query, |
const QStringList & | relation = QStringList() , |
||
QSqlDatabase * | pDatabase = NULL |
||
) | [inline, virtual] |
Clear the model and fetch a list of objects (retrieve all elements and properties associated) of type T (container registered into QxOrm context) mapped to a table in the database and filtered by a user SQL query.
query | Define a user SQL query added to default SQL query builded by QxOrm library |
relation | List of relationships keys to be fetched (eager fetch instead of default lazy fetch for a relation) : use "|" separator to put many relationships keys into this parameter |
pDatabase | Connection to database (you can manage your own connection pool for example, you can also define a transaction, etc.); if NULL, a valid connection for the current thread is provided by qx::QxSqlDatabase singleton class (optional parameter) |
Reimplemented in qx::QxModelService< T, S, B >.
virtual QSqlError qx::QxModel< T, B >::qxFetchRow | ( | int | row, |
const QStringList & | relation = QStringList() , |
||
QSqlDatabase * | pDatabase = NULL |
||
) | [inline, virtual] |
Get an item in the model at line row and fetch all its properties mapped to a table in the database, then all views attached to this model are automatically updated.
row | Get an item in the model at line row |
relation | List of relationships keys to be fetched (eager fetch instead of default lazy fetch for a relation) : use "|" separator to put many relationships keys into this parameter |
pDatabase | Connection to database (you can manage your own connection pool for example, you can also define a transaction, etc.); if NULL, a valid connection for the current thread is provided by qx::QxSqlDatabase singleton class (optional parameter) |
Reimplemented in qx::QxModelService< T, S, B >.
virtual QSqlError qx::QxModel< T, B >::qxInsert | ( | const QStringList & | relation = QStringList() , |
QSqlDatabase * | pDatabase = NULL , |
||
bool | bUseExecBatch = false |
||
) | [inline, virtual] |
Insert all items in the model into database.
relation | List of relationships keys to be inserted in others tables of database : use "|" separator to put many relationships keys into this parameter |
pDatabase | Connection to database (you can manage your own connection pool for example, you can also define a transaction, etc.); if NULL, a valid connection for the current thread is provided by qx::QxSqlDatabase singleton class (optional parameter) |
bUseExecBatch | If true then use the QSqlQuery::execBatch() method to improve performance inserting a list of instances to database (but doesn't fill the last inserted identifier in the C++ instances) |
Reimplemented in qx::QxModelService< T, S, B >.
virtual QSqlError qx::QxModel< T, B >::qxInsertRow | ( | int | row, |
const QStringList & | relation = QStringList() , |
||
QSqlDatabase * | pDatabase = NULL |
||
) | [inline, virtual] |
Insert an item of the model at line row into database.
row | Insert an item in the model at line row |
relation | List of relationships keys to be inserted in others tables of database : use "|" separator to put many relationships keys into this parameter |
pDatabase | Connection to database (you can manage your own connection pool for example, you can also define a transaction, etc.); if NULL, a valid connection for the current thread is provided by qx::QxSqlDatabase singleton class (optional parameter) |
Reimplemented in qx::QxModelService< T, S, B >.
virtual QSqlError qx::QxModel< T, B >::qxSave | ( | const QStringList & | relation = QStringList() , |
QSqlDatabase * | pDatabase = NULL |
||
) | [inline, virtual] |
Save all items (insert or update) in the model into database.
relation | List of relationships keys to be inserted in others tables of database : use "|" separator to put many relationships keys into this parameter |
pDatabase | Connection to database (you can manage your own connection pool for example, you can also define a transaction, etc.); if NULL, a valid connection for the current thread is provided by qx::QxSqlDatabase singleton class (optional parameter) |
Reimplemented in qx::QxModelService< T, S, B >.
virtual QSqlError qx::QxModel< T, B >::qxSaveRow | ( | int | row, |
const QStringList & | relation = QStringList() , |
||
QSqlDatabase * | pDatabase = NULL |
||
) | [inline, virtual] |
Save an item of the model at line row into database.
row | Save an item (insert or update) in the model at line row |
relation | List of relationships keys to be inserted in others tables of database : use "|" separator to put many relationships keys into this parameter |
pDatabase | Connection to database (you can manage your own connection pool for example, you can also define a transaction, etc.); if NULL, a valid connection for the current thread is provided by qx::QxSqlDatabase singleton class (optional parameter) |
Reimplemented in qx::QxModelService< T, S, B >.
virtual QSqlError qx::QxModel< T, B >::qxSaveRowData | ( | int | row, |
const QStringList & | column = QStringList() , |
||
QSqlDatabase * | pDatabase = NULL |
||
) | [inline, virtual] |
Used internally by qx::IxModel::setData() method with e_auto_update_on_field_change option, save an item (even if it is the dirty row item) of the model at line row into database.
row | Save an item (insert or update) in the model at line row |
column | List of columns of model to save in database |
pDatabase | Connection to database (you can manage your own connection pool for example, you can also define a transaction, etc.); if NULL, a valid connection for the current thread is provided by qx::QxSqlDatabase singleton class (optional parameter) |
virtual QSqlError qx::QxModel< T, B >::qxUpdate | ( | const qx::QxSqlQuery & | query = qx::QxSqlQuery() , |
const QStringList & | relation = QStringList() , |
||
QSqlDatabase * | pDatabase = NULL , |
||
bool | bUseExecBatch = false |
||
) | [inline, virtual] |
Update all items in the model into database.
query | Define a user SQL query added to default SQL query builded by QxOrm library |
relation | List of relationships keys to be inserted in others tables of database : use "|" separator to put many relationships keys into this parameter |
pDatabase | Connection to database (you can manage your own connection pool for example, you can also define a transaction, etc.); if NULL, a valid connection for the current thread is provided by qx::QxSqlDatabase singleton class (optional parameter) |
bUseExecBatch | If true then use the QSqlQuery::execBatch() method to improve performance updating a list of instances in database |
Reimplemented in qx::QxModelService< T, S, B >.
virtual QSqlError qx::QxModel< T, B >::qxUpdateRow | ( | int | row, |
const qx::QxSqlQuery & | query = qx::QxSqlQuery() , |
||
const QStringList & | relation = QStringList() , |
||
QSqlDatabase * | pDatabase = NULL |
||
) | [inline, virtual] |
Update an item of the model at line row into database.
row | Update an item in the model at line row |
query | Define a user SQL query added to default SQL query builded by QxOrm library |
relation | List of relationships keys to be inserted in others tables of database : use "|" separator to put many relationships keys into this parameter |
pDatabase | Connection to database (you can manage your own connection pool for example, you can also define a transaction, etc.); if NULL, a valid connection for the current thread is provided by qx::QxSqlDatabase singleton class (optional parameter) |
Reimplemented in qx::QxModelService< T, S, B >.
virtual qx::QxInvalidValueX qx::QxModel< T, B >::qxValidate | ( | const QStringList & | groups = QStringList() | ) | [inline, virtual] |
Reimplemented in qx::QxModelService< T, S, B >.
virtual qx::QxInvalidValueX qx::QxModel< T, B >::qxValidateRow | ( | int | row, |
const QStringList & | groups = QStringList() |
||
) | [inline, virtual] |
Reimplemented in qx::QxModelService< T, S, B >.
virtual bool qx::QxModel< T, B >::setRelationshipValues_Helper | ( | int | row, |
const QString & | relation, | ||
const QVariant & | values | ||
) | [inline, protected, virtual] |
virtual void qx::QxModel< T, B >::setShowEmptyLine | ( | bool | b | ) | [inline, virtual] |
virtual void qx::QxModel< T, B >::sort | ( | int | column, |
Qt::SortOrder | order = Qt::AscendingOrder |
||
) | [inline, virtual] |
virtual QString qx::QxModel< T, B >::toJson_Helper | ( | int | row | ) | const [inline, protected, virtual] |
void qx::QxModel< T, B >::updateAllKeys | ( | ) | [inline, protected] |
void qx::QxModel< T, B >::updateKey | ( | int | row | ) | [inline, protected] |
virtual void qx::QxModel< T, B >::updateShowEmptyLine | ( | ) | [inline, protected, virtual] |
friend struct qx::model_view::detail::QxNestedModel [friend] |
friend struct qx::model_view::detail::QxNestedModel_Container [friend] |
friend struct qx::model_view::detail::QxNestedModel_Generic [friend] |
type_collection qx::QxModel< T, B >::m_model [protected] |
std::shared_ptr<QPair<int, type_ptr> > qx::QxModel< T, B >::m_pDirtyRow [protected] |
When displayed in a QTableView, this will cause an empty line awaiting user input to be displayed at the bottom (enabled with setShowEmptyLine() method)