だから私はこのデータベースと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
日付が現在の日付である場合、これを行うことができます:
$category->setCreatedTs(new \DateTime())
最初のエラーは、タイムスタンプを返すstrtotime
関数によって発生しましたが、\ DateTimeコンストラクターはY-m-d H:i:s
形式を予期していました。
そのため、有効な\ DateTimeを作成する代わりに、falseを返しました。
この場合、不要な場合でも、タイムスタンプに基づいて\DateTime
を作成するには、次のようにする必要があります。
$date = new \DateTime('@'.strtotime('now'));