2017-03-07 9 views
2

ORM \ Entityに列の日付型があります。私は更新するオブジェクトを選択するために、EntityManagerを使用した場合、私はこれらのエラーがあります:「キャッチできる致命的なエラー:クラスのDateTimeのオブジェクトは、文字列に変換することができませんでした」Symfony 3:Doctrine dateTime問題の行

コラム:

/** 
* @ORM\Id 
* @ORM\Column(name="date", type="date") 
*/ 
private $date; 

と問合せ:

$query = $em->createQuery('SELECT t FROM AppBundle:Table t WHERE t.id = :t_id')->setParameter('t_id', $tId); 
$result = $query->getResult(); // <- ¡ERROR IS HERE! 

ERROR:

Catchable Fatal Error: Object of class DateTime could not be converted to string 

どうもありがとう!

答えて

2

__toString()メソッドが必要なため、日付/時刻をDoctrineで一意のIDとして使用することはできません。あなたはこのクラスを作成することができます。

class DoctrineDateTime extends DateTime 
{ 
    public function __toString() 
    { 
     return $this->format('U'); 
    } 
} 

代わりのDateTimeオブジェクトを使用して「$日付」フィールドを設定し、このクラスを使用します。 あなたのIDに対するリクエストに対しても同じことをしてください。

0

これは、一意のIDとしてDateTimeを使用することをまったくお勧めしない理由の1つです。それを行うには

もう一つの方法は、使用され、String型のプライマリキーを設定し、実行します。

$entity->setId(new \DateTime()->format('yyyy/mm/dd'));

は、参考のためにhttps://stackoverflow.com/a/18874646/3062315を参照してください!

関連する問題