ZF2 проекта - нет доктрины, используя родной Zend \ Db: иметь следующую структуру:Zend Db Модель детей моделей
Controller
ProductController
Model
Product
ProductTable
ProductType
ProductTypeTable
Продукт является модель, имеет переменные, соответствующие «продукции» полей таблицы.
ProductTable настольный класс, который подключается к базе данных через tableGateway. ProductTable имеет GetItem() метод для получения запрошенного продукта «ID».
ProductType является моделью, имеет переменные, такие как идентификатор, имя, описание соответствующего к "productTy pes ".
ProductTypeTable - это класс таблицы, аналогичный ProductTable.
Каждый продукт относится к определенному ProductType
products.productTypeId = productTypes.id
это отношение.
В методе ProductTable-> getItem() я могу просто получить productTypeId. Я могу использовать объединения для получения productTypes.name, productTypes.description или любого поля из таблицы «productTypes». Но я не хочу этого делать - вместо этого, имея дело с новыми переменными в Product Product, таких как productTypeName, productTypeDesc, Я хотел бы иметь Product->getProductType()
и установить его как объект ProductType, поэтому я могу получить Product->getProductType() ->getName()
, чтобы получить тип продукта имя.
Просто я хотел бы назначить дочернюю модель как переменную родительской модели.
я могу сделать это в контроллере, как показано ниже:
$product = $this->getProductTable()->getItem(7); // id = 7
$product->setProductType($this->getProductTypeTable()
->getItem($product->getProductTypeId());
Но я хотел бы, чтобы это произошло в классе таблицы продукт GetItem() метод. Поэтому мне не нужно думать об этом на каждом контроллере, и это своего рода инкапсулированный.
Каков правильный способ сделать это?
спасибо.
Это действительно хорошо, насколько я могу следовать вашему подробному описанию. Это здорово, потому что я знал, что должен быть способ, но я не на 100% знаком с ZF2. Я стараюсь избегать Доктрины, чтобы использовать собственные методы - учиться. В настоящее время я не могу проверить это, но я хотел поблагодарить вас за ваши усилия, чтобы объяснить это хорошо. Я дам результаты, когда вернусь на свой компьютер в эти выходные. – smozgur
Я сделал несколько исследований о DataMapper, и я вижу, что это то, что мне нужно, и чему я должен научиться. Однако я слишком сосредоточен на TableGateway, что означает только знакомство с шаблоном TableGateway в ZF2 до сих пор, и мне сложно начать работу без надлежащей документации, и ничего, что я нашел, было только о DataMapper, а какая-то небольшая часть другой большой картины, которая не помогите новичкам. Можете ли вы обратиться к учебнику или о каком-то месте для хорошего начала, за которым я могу следовать, как обычный гид? Кроме того, я понимаю, DataMapper - это точно ответ на мой вопрос. Благодаря! – smozgur
Я бы очень рекомендовал книгу [Шаблоны архитектуры корпоративных приложений (PoEAA)] (http://www.amazon.co.uk/Enterprise-Application-Architecture-Addison-Wesley-Signature/dp/0321127420) Мартина Фаулера. Несмотря на то, что он впервые был опубликован в 2002 году, и большинство примеров находятся на Java, он по-прежнему предлагает очень актуальные и краткие сведения о шаблонах проектирования веб-приложений (шаблон Data Mapper является всего лишь одним из многих). – AlexP