Хобрук: Ваш путь к мастерству в программировании

PostPersist в Doctrine Slim v3

Я использую доктрину с Slim V3, я хочу иметь функцию PostPersist/PostUpdate

это моя сущность

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 *
 * @ORM\Table(name="xxxx", indexes={@ORM\Index(name="xxxx", columns={"xxxx"})})
 * @ORM\Entity
 * @ORM\HasLifecycleCallbacks()
 */
class MyEntity
{

....

/**
 * Set lastUpdate
 *
 * @param \DateTime $lastUpdate
 *
 *
 * @ORM\PostPersist()
 * @ORM\PostUpdate()
 */
public function setLastUpdate($lastUpdate)
{
    $this->last_update = new \DateTime('now');


    return $this;
}

Но когда я сохраняю сущность, мое поле остается нулевым

06.10.2016

Ответы:


1

Если вы хотите изменить значение базы данных, вы прослушиваете неправильное событие. Что касается документа:

  • postPersist — событие postPersist происходит для сущности после того, как сущность стала постоянной. Он будет вызываться после операций вставки в базу данных. Сгенерированные значения первичного ключа доступны в событии postPersist.
  • postUpdate — событие postUpdate происходит после операций обновления базы данных до данных сущности. Он не вызывается для оператора DQL UPDATE.

Так что лучше обрабатывать событие pre вместо события post. Например:

/**
 *
 * @ORM\PrePersist()
 * @ORM\PreUpdate()
 */
public function setLastUpdate()
{
    $this->last_update = new \DateTime('now');


    return $this;
}

Надеюсь, это поможет

06.10.2016
Новые материалы

Создание кнопочного меню с использованием HTML, CSS и JavaScript
Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

Внедрите OAuth в свои веб-приложения для повышения безопасности
OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

Классы в JavaScript
class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

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

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

Обзор: Машинное обучение: классификация
Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

Разработка расширений Qlik Sense с qExt
Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..