ORM Designer for cake model generation

I’m trying ORM Designer, so I’d like to share my impressions.

(Yes, that’s only to get my 20% discount, of course.)

I tried to design a simplified database structure, for prototyping a simple application – a cakephp side project i had in mind.

The first impression was good: the interface is simple, easy to understand and smooth. Sketching the entity relationship diagram is a breeze.

ORM Designer
ORM Designer

Some detail might seem not ideal, at first. But they are minor issues (e.g. create new table: enter doesn’t add a new field, but you have tu click on the add icon, to change coumn sometimes tab is used, sometimes left / rigt cursor keys) or they actually work well in the tehy are implemented.

To create relations, you can’t simply drag and drop the foregn key of the first table on the related key on the second table, but you have to click on the foreign key icon on the tollbar (o table editing window), and check the values. And ORM D  automatically adds the needed foreign key based on conventions. Eventually, all this works nicely, it’s very easy to get used to it, and it feels natural after a short while.

Just keep in mind it’s an ORM designer (indeed), not a DB tool:
the drawn tables are the objects (in cakephp, the models) and the actual table name is specified in the orm property window (the bottom right box of the interface). I realized that after a first moment of confusion. Field types are generalized, not db specific (“String”, not “Varchar (100)”). And so on.

Some little things make a developer happy: one tiny feature i love is the contextual “copy column names to clipboard”. At last! No need to look for or remember dozens of field names, just copy and paste in the code the comma separated list and delete what you don’t need.  I didn’t find a similar feature in netbeans or zend studio for eclipse, for those annoyng moments when you actually have to list all the relevant columns to fill the “fileds” array. If you got long tables and complex queries (contain / paginate..) you know what I mean. It’s all about being lazy and productive.

Probably you know a better way -in some ide- to copy a list of table fields in teh code editor: please let me know!

Well, this is the Diagram level. Let’s go to the proper ORM.

The good news: there is cakephp support. Te bad news: it is in alpha stage, and this has a wide impact:

no, I’m not going to write all the validation rules (or even the virtual fieldas) in a (more or less) 20 char field.

This is the main reason why the cake bake shell command is still the better option.
A custom window (wizard?) for selecting multiple validation rules per field and their options (required, allowempty, on update..) -and more options for other ORM elements- would be a killer.  We’ll see if something similar makes it in the final version.

For now, propel and doctrine support (and symfony, I think) is much more mature.

While designing, it’s A lot smoother than the visual feature in db tools like sql yog – a lot lighter than the feature bloated visual paradigm tools.. dunno about toad.

For my needs, it complements well sqlyog. I wish it was a db design tool also! An sql export (and import) feature would be awesome (I know, it contradicts the abstraction of this software).. but..

Maybe you can work around it (import form dbdesigner, mysql workbench or an ORM in the supported formats file;  or export the ORM and get the schema from the exported model..)

So, I can’t say a final word about the usefulness of ORM designer for cake. If you use doctrine or propel, it’s probably worth the purchase: fast, light, easy to use – overall it’s a pleasure. If you only get it for cake.. then wait at least the beta.

For me.. well, i think I’ll bet on ORM designer. If I get the discount 🙂

(Maybe I’ll add an italian version of this review)