поэтому я следил за этой базой данных и учебником 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




Если ваша дата является текущей датой, вы можете просто сделать это:
$category->setCreatedTs(new \DateTime())
Ваша первая ошибка была вызвана функцией strtotime, которая возвращает метку времени, но конструктор \ DateTime ожидал формат Y-m-d H:i:s.
Вот почему вместо создания действительного \ DateTime он вернул false.
Даже если в этом случае в этом нет необходимости, вы должны были сделать что-то вроде этого, чтобы создать \DateTime на основе метки времени:
$date = new \DateTime('@'.strtotime('now'));