Я создаю сайт с CodeIgniter, и у меня есть модель с именем Blog_model
.
В Blog_model
существуют методы для получения списка сообщений по определенной теме, например, getPopularPosts()
.
getPopularPosts()
запрашивает в таблице сообщений список сообщений с topic_id
, соответствующим указанному, и сортирует их по популярности. Итак, это один запрос ко всей таблице постов (предположим, что в конечном итоге это будет очень много), чтобы найти все посты с topic_id
x .
Затем foreach
результат as
индивидуальный идентификатор записи, он создает новый Post
объект. Класс Post
создает сообщение, устанавливая поле id
.
Чтобы вернуть содержимое Post
, я назначаю $post->getPost();
, который снова запрашивает таблицу сообщений, чтобы вернуть всю строку для заданного id
.
Эта организация (AFAIK) следует хорошему объектно-ориентированному принципу. Но теперь, для каждого сообщения (опять же, давайте предположим, тысячи, миллионы, что угодно ...), я должен сначала запросить список id
с, а затем снова, чтобы получить содержание каждого сообщения. Если я возвращаю 30 сообщений, это означает 31 отдельный запрос.
Кроме того, я мог бы разбить объектно-ориентированный шаблон и вытянуть *
для каждого поста в posts
, где topic_id
= x . Затем у меня есть один запрос, который возвращает все 30 сообщений, но теперь я не чувствую себя объектно-ориентированным.
Что делать?