When I use Doctrine to generate classes from Yaml/db each Base class (which includes the table definition) extends the Doctrine_Record class.
Since my app uses a master and (multiple) slave db servers I need to be able to make the Base classes extend my custom record class to force writes to go to the master db server (as described here). However if I change the base class manually I lose it again when I regenerate my classes from Yaml/db using Doctrine.
I need to find a way of telling Doctrine to extend my own Base class, or find a different solution to a master/slave db setup using Doctrine.
Example generated model:
abstract class My_Base_User extends Doctrine_Record
{
However I need it to be automatically generated as:
abstract class My_Base_User extends My_Record
{
I am using Doctrine 1.2.1 in a new Zend Framework 1.9.6 application if it makes any difference.
Typical, as soon as I ask the question I manage to find the answer. I'm recording it here in case anyone else has the same issue.
You can pass in the parameter 'baseClassName' into the generateModels* methods and Doctrine will use that as the Base record class.
Examples:
Doctrine_Core::generateModelsFromDb('models', array('master'), array('generateTableClasses' => true, 'baseClassName' => 'My_Record'));
or using Cli:
$options['generate_models_options'] = array(
'pearStyle' => true,
'baseClassPrefix' => 'My_',
'baseClassName' => 'My_Record',
'classPrefix' => '',
'classPrefixFiles' => false,
'generateTableClasses' => true,
);
$cli = new Doctrine_Cli($options);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With