Модели без доступа к базе данных в symfony2 - PullRequest
6 голосов
/ 12 октября 2011

В настоящее время я изучаю, как использовать symfony2 framework.

Проходя кулинарную книгу , я начинаю понимать, как все сходится.

Однако у меня есть 2 вопроса относительно сущностей, которые, как я считаю, являются моделями в шаблоне MVC:

  • В документации, кажется, много говорится о сущностях, использующих доктрину в качестве ORM. Если у меня есть сущность / модель, для которой не требуется ORM, это все еще считается "сущностью"?

  • В большинстве учебных пособий, которые я видел, сущности часто все выбрасываются в папку, называемую «сущности» в комплекте приложений. Я чувствую, что со многими сущностями в приложении это может стать довольно грязным и неорганизованным. Как я могу группировать и организовывать объекты?

Приветствия:)

Ответы [ 3 ]

4 голосов
/ 15 октября 2011

Объекты - это модели, хранящиеся в реляционной базе данных.Документы - это модели, хранящиеся в базах данных документов (например, MongoDB).

Если вы не хотите сгибать вашу модель в определенном пространстве имен в зависимости от того, какой тип хранилища вы используете, вот что я предлагаю.Создайте пространство имен Model для классов вашей модели.Если вы решите использовать реляционную базу данных, вы расширяете класс модели и помещаете его в пространство имен Entity, предоставляя информацию о сопоставлении во внешнем файле.Если позднее вы решите перейти к базе данных документов, вы сделаете то же самое, но используете пространство имен Document.

Хороший пример этой идеи см. FOSUserBundle .

3 голосов
/ 12 октября 2011

относительно вашего вопроса о том, как организовать ваши классы моделей:

Вы можете добавить подпапки в папку «Entity», а затем просто следовать этой структуре в своем определении пространства имен, например:

<?php

namespace Acme\SampleBundle\Entity\Subfolder\EntityClass

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

Но вам понадобится какой-то интерфейс для этого, например EntityManager в Doctrine2.

Я бы всегда предпочел использовать ORM/ODM..

В этом случае я бы просто добавил к вашему классу сущности простой метод:

<?php

public function sendByEmail() {

// Do stuff
}

Вам вообще не нужно сохранять (сохранять в БД) материал.Обратите внимание, что в symfony1.4 был метод save() для сущностей.В Symfony2 материал сохраняется через $entityManager->persist($entity);

0 голосов
/ 12 октября 2011

Когда вы говорите, что у вас есть сущность / модель, которая не требует ORM, вы имеете в виду:

  • Модель очень проста, поэтому вы можете создавать собственные запросы к базе данных, ИЛИ:
  • Данные могут быть сохранены в обычные файлы

Если это первый случай, вы можете управлять им, как хотите, но рекомендуется использовать ORM.

Если это второй случай (как я полагаю), вам все же лучше сделать классы сущностей. Просто вы ссылаетесь на ваши данные по-разному в ваших классах. Вместо того, чтобы запрашивать базу данных, вы ищите в файлах.

Этим вы сохраняете лучшие практики, и если однажды вы захотите перейти на модель БД, вам нужно будет только изменить эти классы.

Чтобы ответить на ваш второй вопрос, у меня есть модель с 50+ сущностями, и это не создает беспорядка. Внутри классов сущностей я говорю пользователю, где найти модель сущностей-отношений, так что это ясно.

Вам это помогает?

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