web-dev-qa-db-ja.com

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投稿が表示され、いくつかは利用できませんでした。

->setメソッドからエンティティにdatetime値を設定するにはどうすればよいですか?

(既に回答がある場合は、リンクしてください。#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
7
treyBake

日付が現在の日付である場合、これを行うことができます:

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

最初のエラーは、タイムスタンプを返すstrtotime関数によって発生しましたが、\ DateTimeコンストラクターはY-m-d H:i:s形式を予期していました。

そのため、有効な\ DateTimeを作成する代わりに、falseを返しました。

この場合、不要な場合でも、タイムスタンプに基づいて\DateTimeを作成するには、次のようにする必要があります。

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