Is there a way to create a 'Wt::Dbo::ptr' from 'this' pointer?

Added by Plug Gulp 7 months ago

Say I have Dbo classes Mother and Child. The relation between them is One-to-many. The Mother class has a method create_child. In this method a new Child object is created. The constructor of the Child class takes Wt::Dbo::ptr<Mother> as a parameter. One way I can get hold of the Wt::Dbo::ptr<Mother> pointer from within the Mother::create_child method is to query the database. But that is expensive. I am already inside the Mother object, so is there a way to easily convert the this pointer to a Wt::Dbo::ptr instead of querying the database again?

Replies (1)

RE: Is there a way to create a 'Wt::Dbo::ptr' from 'this' pointer? - Added by Roel Standaert 7 months ago

The easiest way would probably be to have Mother derive from Wt::Dbo::Dbo<Mother>:

Then you can simply use self().

If you have the id of the Mother object, then Session::load should also simply get the object from the session's cache. Session::loadLazy can also be used to guarantee that no actual query is performed to create the ptr. Only if the ptr is then dereferenced and the object is not in the session's cache, it will query the database.