Symfony 4 - Set DateTime

人走茶凉 提交于 2020-12-08 06:07:57

问题


so I've been following this Database and the Doctrine tutorial: https://symfony.com/doc/current/doctrine.html

the only difference is that I added a created_ts field to it (among some other fields, but they work fine so no need to go into them).

I used the make:entity command to generate my class and the method for setting my created_ts got generated like this:

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

    return $this;
}

So in my /index page I went to save a new entity using:

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

I had a funny feeling this would error and I was right:

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

but I'm not sure how to implement the DateTimeInterface inside the function.. I tried googling but it shows a lot of Symfony2 posts, a few I tried to no avail.

How do I set a datetime value in my entity from the ->set method?

(if there is already an answer, please link. #symfonyScrub)

update

# 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

回答1:


If your date is the current date, you can just do this:

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

Your first error was caused by the strtotime function that returns a timestamp but the \DateTime constructor was expecting a Y-m-d H:i:s format.

That's why instead of creating a valid \DateTime, it returned false.

Even if it's unnecessary in this case, you should have done something like this to create a \DateTime based on a timestamp:

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


来源:https://stackoverflow.com/questions/50467271/symfony-4-set-datetime

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!