Symfony 4 - Установить дату и время

поэтому я следил за этой базой данных и учебником Doctrine: https://symfony.com/doc/current/doctrine.html

Единственная разница в том, что я добавил к нему поле created_ts (среди некоторых других полей, но они работают нормально, поэтому нет необходимости в них заходить).

Я использовал команду make:entity для создания своего класса, и метод настройки моего created_ts был сгенерирован следующим образом:

public function setCreatedTs(\DateTimeInterface $created_ts): self
{
    $this->created_ts = $created_ts;

    return $this;
}

Итак, на моей странице /index я пошел, чтобы сохранить новую сущность, используя:

$category->setCreatedTs(\DateTimeInterface::class, $date);

У меня было странное чувство, что это приведет к ошибке, и я был прав:

Type error: Argument 1 passed to App\Entity\Category::setCreatedTs() must implement interface DateTimeInterface, string given

но я не уверен, как реализовать DateTimeInterface внутри функции. Я пробовал погуглить, но он показывает много сообщений Symfony2, некоторые из которых я пытался безрезультатно.

Как мне установить значение datetime в моей сущности с помощью метода ->set?

(если уже есть ответ, дайте ссылку. #symfonyScrub)

Обновить

# tried doing this:
$dateImmutable = \DateTime::createFromFormat('Y-m-d H:i:s', strtotime('now')); # also tried using \DateTimeImmutable

$category->setCategoryName('PHP');
$category->setCategoryBio('This is a category for PHP');
$category->setApproved(1);
$category->setGuruId(1);
$category->setCreatedTs($dateImmutable); # changes error from about a string to bool
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
10
0
31 602
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если ваша дата является текущей датой, вы можете просто сделать это:

$category->setCreatedTs(new \DateTime())

Ваша первая ошибка была вызвана функцией strtotime, которая возвращает метку времени, но конструктор \ DateTime ожидал формат Y-m-d H:i:s.

Вот почему вместо создания действительного \ DateTime он вернул false.

Даже если в этом случае в этом нет необходимости, вы должны были сделать что-то вроде этого, чтобы создать \DateTime на основе метки времени:

$date = new \DateTime('@'.strtotime('now'));

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