Расчет данных из БД с помощью CodeIgniter - PullRequest
1 голос
/ 19 июля 2011

Я использую простой PHP-фреймворк (например, Codeigniter) без ORM.

У меня есть база данных с данными о товаре (цены, продажи, страница в каталоге ...).

И яхочу рассчитать конверсию на страницу и конверсию на продукт.

Расчеты с использованием SQL не являются проблемой, но я не знаю, где их разместить.

Должен ли я создатьмодель «Страница» и «Продукция» с такими методами, как "Page::getConversions($page_id)" или "ConversionPerPage" и модель "ConversionPerProduct", или sth.совсем другое.

Ответы [ 3 ]

2 голосов
/ 19 июля 2011

Я думаю, что лучшие классы моделей должны иметь два класса для каждой таблицы - один для объекта и множественное для статических классов. Например: если у вас есть таблица страниц, у вас должны быть классы страниц и страниц. Первый позволит вам иметь один объект из таблицы, и вы можете использовать обычные методы для него, например:

$page = new Page($page_id);
$conversions = $page->getConversions();
$page_number = $page->getNumberInBook(); etc

С другой стороны, в классе Pages вы можете поместить методы, которые будут (обычно) возвращать массив Page, и эти методы обычно будут статическими:

$pages = Pages::getPagesByCatalog($catalog_id);

Таким образом, вы получите настоящий ООП и код с полной реализацией модели MVC. Я надеюсь, что эта модель иерархии поможет вам. Мы используем его в нашем офисе, и он показал себя действительно хорошо. Всего наилучшего!

0 голосов
/ 19 июля 2011

Предположительно, вы все равно будете иметь модели Page и Product, поэтому я бы добавил к ним функцию getConversions ().

0 голосов
/ 19 июля 2011

По сути, вы создаете модели на основе схемы базы данных. Итак, первый вариант предпочтительнее. Более того, это должен быть метод экземпляра, а не метод класса (объект затем идентифицируется из $ page_id).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...