Я думаю, что лучшие классы моделей должны иметь два класса для каждой таблицы - один для объекта и множественное для статических классов.
Например: если у вас есть таблица страниц, у вас должны быть классы страниц и страниц.
Первый позволит вам иметь один объект из таблицы, и вы можете использовать обычные методы для него, например:
$page = new Page($page_id);
$conversions = $page->getConversions();
$page_number = $page->getNumberInBook(); etc
С другой стороны, в классе Pages вы можете поместить методы, которые будут (обычно) возвращать массив Page, и эти методы обычно будут статическими:
$pages = Pages::getPagesByCatalog($catalog_id);
Таким образом, вы получите настоящий ООП и код с полной реализацией модели MVC.
Я надеюсь, что эта модель иерархии поможет вам. Мы используем его в нашем офисе, и он показал себя действительно хорошо.
Всего наилучшего!