Using query() and execute() is very tempting: at some points you are faster doing a query in plain SQL, than building a proper find() statement.

But you really should not do it!

I had a lot of discussions with a colleague of mine and finally he made the argument that hit me:

beforeFind() and afterFind() will not apply to your plain SQL statements.

That’s it. Life can be so simple.

Imagine you add some data in afterFind()

And even if you now argument, that you will not do this, imagine the hassle you will be going through, if you have to use beforeFind() or afterFind()!

So, learn how to write proper find() statements and you will not only learn a lot from it, but you also will have more failproof code.