After having fought with my database schema and the phalcon orm for 2 hours because of a typo. I deceided to make a small add-on that would avoid this ( and maybe save other phalcon newbies a lot of time :) ) This class will override all relationship related methods (belongsTo & co) in \Phalcon\Mvc\Model and will check if the fields/objects you are requesting in the parameters really exist.

So for example:

class customer extends BaseModel {
    protected $id;
    protected $siteid;

    public function initialize()
    {
        $this->setSchema("public");
        $this->belongsTo('siteid', 'Sites', '5id');
    }
}

The only difference is that we are inheriting from BaseModel and not \Phalcon\Mvc\Model.

Now suppose you made a typo because your cat also wanted to code while you where working. And '5id' actually need to be 'id'. This will trigger a warning

Cannot find field 5id used by belongsTo in Object Sites

All fields and objects give to belongsTo,hasManyToMany,hasMany and hasOne are checked.

Please check https://gist.github.com/lucvht/37c2b69f867f95494f81 for the code

For now this class is just echo'ing the errors which seems rather ugly, is there somekind of phalcon specific logging class I could use ? Also I would like to be able to disable all checks when the site is running in production (is this already in phalcon ?). Suggestions welcome..