как использовать модели базы данных codeigniter - PullRequest
0 голосов
/ 11 июля 2011

Мне интересно, как модели в воспламенителе кода могут использоваться.

Допустим, у меня есть пара таблиц в базе данных элементов меню, и я хочу запросить информацию для каждой таблицы в разных контроллерах.Я делаю разные классы моделей для каждой из таблиц и размечаю функции внутри них?

Спасибо!

Ответы [ 3 ]

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

Модели должны содержать все функции для извлечения и вставки данных в вашу базу данных. Контроллер загрузит модель:

$this->load->model('model_name');

Затем контроллер извлекает любые данные, необходимые представлению, через абстрактные функции, определенные в вашей модели.

Лучше всего создать отдельную модель для каждой таблицы, хотя это не обязательно.

Вы должны прочитать о шаблоне проектирования MVC, он используется codeigniter и многими другими фреймворками, потому что он эффективен и позволяет повторно использовать код. Более подробную информацию о моделях можно найти в документации Codeigniter:

http://codeigniter.com/user_guide/general/models.html

1 голос
/ 11 июля 2011

CodeIgniter обладает гибкостью и оставляет это решение за вами. В руководстве пользователя не указано, каким образом вы должны организовать свой код.

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

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

На мой вкус, CodeIgniter слишком гибкий здесь - я бы скорее назвал это расплывчатым.«Модель» CI не имеет спецификаций и интерфейсов, это могут быть разные вещи:

  • объект предметной области , где каждый экземпляр представляет собой в основном записьстола.Иногда это «анемичный» объект домена, каждое свойство отображается непосредственно в столбец БД, мало поведения и мало или вообще не понимают отношения объектов и «графы» (скажем, внешние ключи в БД - это просто целочисленные идентификаторы в PHP).Или это также может быть «богатый (или истинный) объект предметной области» со всей бизнес-аналитикой, который также знает об отношениях: скажем, вместо $person->getAccountId() (возвращает int) мы имеем $person->getAccount();возможно, также знает, как сохранить себя (и, возможно, также полный граф или связанный объект - возможно, некоторое понятие «грязности»).

  • A сервисный объект , связанныйна постоянство объектов и / или общие запросы к БД: быть DataMapper, DAO и т. д. В этом случае у нас обычно есть один единственный экземпляр (синглтон) объекта (небольшое или нулевое состояние), обычно один на таблицу БД или на класс домена,

Когда вы читаете в документах или форумах CI, скажем, о Person model, вы никогда не узнаете, с каким шаблоном мы имеем дело.Хуже того: часто это неуклюжий микс из этих принципиально разных шаблонов.

По моему опыту, эта неформальность / неопределенность не специфична для CI, а скорее для фреймворков PHP.

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