Squeak.ru - шаблоны программирования

Использование представлений в Doctrine 2 с Symfony 2

У меня есть база заказов (упрощенная): order: {id, отгрузка, скидка, дата} order_item: {id, order_id, name, amount, price}

Если я хочу получить полную цену (СУММА (цены на товары) + скидка на доставку), я, конечно, мог бы добавить метод в свой класс Order, который выполняет запрос. С другой стороны, было бы удобно иметь представление о заказе, которое включает полную стоимость.

Можно ли интегрировать это в объект сущности Doctrine2? Возможно ли вообще создать такое представление с помощью аннотаций в классе, поскольку я поддерживаю макет своей базы данных с помощью Symfony/Doctrine?


Ответы:


1

У вас есть Doctrine Entity и EntityRepository.

Запросы должны отправляться в классы репозитория как метод. Представление mysql — это просто запрос. Класс репозитория возвращает один или несколько классов сущностей. Строка IE в таблице базы данных.

Пожалуйста, предоставьте код и схему, чтобы получить более точные ответы.

Это может перейти к объекту заказа:

public function getOrderTotal() {
    $sum = 0.0;
    foreach ($this->getOrderItems() as $item) {
     //Process 
    }
    return $sum;
}

Обработка и создание встроенных представлений MySQL не поддерживаются Doctrine2.

17.10.2011
  • Простите, да наверняка что? Когда я сказал, можно ли интегрировать это в объект сущности Doctrine2? Я не хотел писать метод с запросом, а хотел позволить Doctrine сгенерировать представление в базе данных (которое я также могу использовать извне). Ваш ответ, кажется, больше нет на это. 17.10.2011
  • Опять же, у Doctrine2 не совсем странные стандарты кодирования, тогда я не думаю, что класс Repository — это правильное место. С точки зрения ООП я ожидал получить свойство объекта из самого объекта, а не из какого-либо репозитория. Насколько я понимаю, одно из преимуществ доктрины2 заключается в том, что вы можете работать с обычными объектами вместо классов, наследуемых от классов доктрины. 20.10.2011
  • Ты не понял. Вы работаете с объектами, расширяющими Doctrine Entity. Преимущество в том, что у вас нет возможности работать с простыми php-массивами, такими как, например, mysql_fetch_assoc. 11.01.2012
  • Я не совсем понимаю. Я ничего не продлеваю для своих Entites. В документе также говорится, что вы этого не делаете: doctrine-project.org/docs/orm/2.1/en/tutorials/ Кроме того, хотя класс Entity существует, он является окончательным. 12.01.2012

  • 2

    ммм ¿Возможно? Я не знаю. Я думаю, что лучше всего было бы создать собственный репозиторий для этих объектов. Сущности с запросами в своих методах не являются чистыми. Здесь есть пример работы с сущностями и пользовательскими запросами http://www.zalas.eu/doctrine2-and-symfony2

    17.10.2011
  • Привет, я не думаю, что это правильно. В Howto описывается ситуация с запрашиваемыми экземплярами сущности (в моем случае, например, getOrdersForItem($item)). Я согласен, что такие методы не принадлежат объекту сущности. Что я хочу сделать, так это получить естественное свойство сущности, которое просто не существует в виде столбца из-за правил реляционных баз данных. В OOM это определенно относится к методу сущности. В доктрине 1 я думаю, что сейчас репозиторий назывался _Entity_Table. Может быть соглашение для доктрины 2, но ответ на это не является вашей ссылкой. 18.10.2011
  • Новые материалы

    Угловая структура архитектуры
    Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

    «Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
    Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

    Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
    В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

    Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
    React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

    Создайте API с помощью Python FastAPI
    Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

    Веселье с прокси-сервером JavaScript
    Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

    Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
    Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...