Houston PHP Users Group Message Board › More Info (Symfony): Comment I made during demo about changing schema and lo
|A former member||
Why keep two versions of the data object model in two different directories?
You will probably need to add custom methods and properties to the model objects (think about the getName() method in Listing 8-1). But as your project develops, you will also add tables or columns. Whenever you change the schema.yml file, you need to regenerate the object model classes by making a new call to propel-build-model. If your custom methods were written in the classes actually generated, they would be erased after each generation.
The Base classes kept in the lib/model/om/ directory are the ones directly generated from the schema. You should never modify them, since every new build of the model will completely erase these files.
On the other hand, the custom object classes, kept in the lib/model/ directory, actually inherit from the Base ones. When the propel-build-model task is called on an existing model, these classes are not modified. So this is where you can add custom methods.
You should populate the database with fixtures before starting the tests. This can be done via the sfPropelData object. This object can load data from a file, just like the propel-load-data task, or from an array.
Since I am in dev and I change or add to my database schema alot, after I change the schema and add a new table or change an int type to a varchar or something, I sometimes have to change the sql that I had populated in the database. So I always dump and backup my database before I make changes like these. Really because I am very paranoid and because when I don't I get into trouble. Murphy comes looking for me.