I'm a PHP developer who started with CodeIgniter. In it, designing models was easy: it seemed like each method defined in models was the equivalent of static methods in a normal, objected-oriented environment.I tried FuelPHP, which has an built-in active record style ORM, and PHP ActiveRecord to use with CodeIgniter. I found creating models was easy with ORM, and taught me best practices when designing models.However, I didn't like that I was tied to a specific ORM implementation, and as I got better with SQL, I thought ORMs were a bit heavy when compared to how quickly I could retrieve stuff with SQL.But when I try to design models from scratch without ORM, I'm lost: The ORM  system of one class per table and queries with eager loading makes sense, and seems like worth the performance hit for using ORM.In what situations should I avoid using ORM? How can I design models without using ORM, so that I can use SQL directly?
How can I design a model layer without ORM, and when should I use it?
php;sql;mvc;orm;model
I didn't like the fact that i was tied to a specific ORM implementation...Why not?  Are you afraid you will pick the wrong one?  That sounds like a case of Not Invented Here.  You are going to be dependent on the chosen language, and SQL, and the web framework, and a dozen other things.  An ORM is just one more.  As long as the performance through an ORM is adequate, I would use it.  If the ORM-generated queries are too slow for some pages, then create a SQL view or stored procedure to retrieve precisely the needed information, and map the results to a custom presentation class.  Use the ORM for the mapping if it is convenient, otherwise you can map the SQL result set to an array of objects yourself.