Работа с объектом DateTime, полученным от доктрины

Я получаю объект DateTime от $ lastPricing-> getExpiredAt ().

После этого я пытаюсь сохранить новый объект сущности:

  $pricing = new AccountPricing();
  if ($currentPricing) {
      $start_date = $currentPricing->getExpiredAt();
  } else {
      $start_date = new \DateTime('now');
  }
  $pricing->setStartedAt($start_date);
  $this->entityManager->persist($pricing);
  $this->entityManager->flush();
  // This temporaly fix
  $start_date->modify('+ ' . $period . ' month');
  $pricing->setExpiredAt($start_date);
  $this->em->persist($pricing);
  $this->em->flush();

Если я попробую это:

  $pricing = new AccountPricing();
  if ($currentPricing) {
      $start_date = $currentPricing->getExpiredAt();
  } else {
      $start_date = new \DateTime('now');
  }
  $pricing->setStartedAt($start_date);
  $start_date->modify('+ ' . $period . ' month');
  $pricing->setExpiredAt($start_date);
  $this->em->persist($pricing);
  $this->em->flush();

В start_at и expired_at прописаны похожие даты (те, что после модификации).

Я думаю, это потому, что DateTime - это объекты, а в php все объекты передаются по ссылке.

Есть идеи, как это сделать без двойного слива?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
41
1

Ответы 1

Забываю про клон:

  $pricing = new AccountPricing();
  if ($currentPricing) {
      $start_date = $currentPricing->getExpiredAt();
  } else {
      $start_date = new \DateTime('now');
  }
  $pricing->setStartedAt($start_date);
  $end_date = clone $start_date;
  $end_date->modify('+ ' . $period . ' month');
  $pricing->setExpiredAt($end_date);
  $this->em->persist($pricing);
  $this->em->flush();

Другие вопросы по теме