2016-07-25 2 views
-1

Я иду с фона Коханы и задал пару вопросов, связанных с проблемой, которую у меня есть, и вам нужно выяснить, как это сделать. Я ОЧЕНЬ новичок в Symfony и Doctrine и люблю изучать новые рамки и исправлять способы кодирования. Однако я нахожу, что Doctrine ORM расстраивает, чтобы использовать все же мощный.Как выполнить некоторый код после того, как Symfony3/Doctrine загружает данные из моей базы данных?

Итак, вот моя основная проблема, и я постараюсь быть кратким. У меня есть таблица products и таблица products_images. Следуя руководству для Symfony, я уже могу создавать Entities для обоих и сопоставлять отношения, создавать геттеры и сеттеры, создавать репозитории и весь бит. Но вот где он становится липким ...

Таблица product_images содержит только имя изображения, а не путь, который мне, очевидно, понадобится, если я собираюсь построить и использовать href в моем html. Таблица продуктов была заполнена продуктами, сканируясь через Интернет и получая их в этом методе, и в качестве требования лиц, которые заставляют меня писать свой веб-сайт, я должен хранить изображения в каталогах, которые отображают, где они были сканированы из , Расположение изображений часто менялось, поэтому я НЕ хочу хранить путь в базе данных.

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

Последняя попытка найти решение для этого заключалась в том, чтобы изменить getter для имени изображения в Entity, но так как я использую createQueryBuilder() для выполнения некоторого DQL, похоже, что геттеры не используются, и теперь у меня ничего нет продолжать. Я не могу найти документацию на официальном сайте Doctrine, которая помогает мне обойти эту проблему, и мне просто нужно знать, как ее преодолеть. Может ли кто-нибудь помочь?

+2

Давайте ненадолго пропустим Доктрину. Как вы можете * угадать * путь? Откуда вы знаете, откуда оно взялось? –

+1

Я думаю, вы спрашиваете, как выполнить некоторый код после загрузки изображения из базы данных? Если да, взгляните на систему событий doctrine и, в частности, на событие postLoad. http://doctrine-orm.readthedocs.io/projects/doctrine-orm/en/latest/reference/events.html#postload и http://symfony.com/doc/current/cookbook/doctrine/event_listeners_subscribers.html – Cerad

+0

pogeybait, -1 для не «Написание заголовка, в котором суммируется конкретная проблема». Подробнее см. Ссылку [как спросить] (http://stackoverflow.com/help/how-to-ask). В частности, когда пользователи ищут аналогичный вопрос, важно иметь правильный заголовок. Можете ли вы изменить свое сообщение и изменить заголовок? Кроме того, DQL не похож на построитель запросов! Можете ли вы подтвердить, используете ли вы [VichUploaderBundle] (http://symfony.com/doc/current/cookbook/controller/upload_file.html) или нет? Благодаря! –

ответ

0

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

то этого нужно просто нужно добавить геттер

getImageWebPath() { 
    return self::PRODUCT_WEB_PATH. $this->getImageName(); 
} 

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

+0

Im using createQueryBuilder(), который гидратирует с использованием отражения (а не мои слова), поэтому геттеры не используются и вызывают ошибки в Twig, если я пытаюсь использовать что-либо, кроме полей, выбранных мной в предложении select(). – pogeybait

Смежные вопросы