#php #doctrine-orm #symfony4
#php #doctrine-orm #symfony4
Вопрос:
Мне нужно использовать свойство в одном из моих объектов, чтобы установить значение другого свойства в этом же объекте.
Позвольте мне объяснить, у меня есть два свойства, одно из них — имя изображения, а другое — ссылка для скачивания, чтобы получить ссылку для скачивания, мне нужно взять имя изображения и передать его функции, которая получит мою ссылку для скачивания из Интернета
Я просматривал методы жизненного цикла в doctrine, но я не могу заставить его работать, на данный момент я хочу только отключить это имя изображения в свойстве ссылки для загрузки.
Итак, пользователь загружает файл, я получаю обратно имя файла, беру это имя и использую его для получения ссылки на скачивание в моем свойстве download link.
Я использую метод «postPersist», и опять же, он просто возвращает нулевое значение, когда я смотрю на свою базу данных
Объект:
/**
* @ORMColumn(type="text", nullable=true)
*/
private $downloadImage;
//I commented out the setters and getters, cause i dont think i
//need them since i will be setting the value by default in the
//"PostPersist" method
Метод postPersist:
/**
* @ORMPostPersist
*/
public function setDownloadLinkValue ()
{
$this->downloadImage = $this->getImageName(); //Yes yes, i have tried both, with "getImageName()" and "imageName"
}
Я думаю, что это очень глупая ошибка, но я не уверен на 100%, если вам нужно что-то еще увидеть в моем коде, пожалуйста, дайте мне знать, чтобы я мог обновить этот пост
Комментарии:
1.
public function setFileName(string $name): self { $this->fileName = $name; $this->setDownloadLink($name); return $this}
? — Нет необходимости делать это в postPersist, делайте это при настройке. Если у вас нет какой-то специальной штуковины, которая будет создавать ссылку для вас. Но если это прямая ситуация «заменить любой символ, не содержащий слов, максимум 1 чертой», используйте регулярное выражение в установщике. Цепочка установщиков, как показано, выполнена.2. Я пытаюсь это сделать, но это тоже не работает, но я думаю, что я знаю, как решить мою проблему, но это был бы совсем другой подход. Спасибо за ответ, кстати