I haven't tried this, I have never seen why to put custom tables in a separate database, as keeping on the same database has no problem regarding ezpersistentobject
Nevertheless, I guess this
eZPersistentObject gets Ezpublish current database instance calling ezDB class like
$db =& eZDB::instance();
eZDB has a method to set Ezpublish current database instance , so calling it should do the trick
//get ezpublish current instance
$ezdb =& eZDB::instance();
//create your database instance
$mydb =& eZDB::instance( ..., $yourdatabaseparameters, $forceNewInstance=true);
//set it as default
eZDB::setInstance( $mydb );
//from here any call to ezpersistent will use your database instance
....
/don't forget to restore ezpublish database instance
eZDB::setInstance( $ezdb );
Basically , it keeps switching between ezpublish database, and your custom database
I once had to connect to a custom MS SQL database (read-only access) to show some data of it on our eZ Publish site. To be able to use eZPersistentObject for this a hack was required. You can find a patch at http://issues.ez.no/10667. Be careful, this is only tested for reading external data, but normally it should also work for modifying the external database. Let me know if you have problems using it. Good luck!
I tested your patch for fetching some data and it worked like a charm. At some point, we'll need to write data back to the database, I'll keep you posted on the progress :)
You must be logged in to post messages in this topic!