2017-06-09 2 views
2

Ich habe einen sehr seltsamen Fehler in meiner Symfony App und ich weiß nicht, wie ich es beheben kann. Ich möchte eine DateTime in einer meiner Entitäten mit einer DateTime nach dem Hinzufügen einer speziellen DateInterval setzen. Hier ist mein Code:date_add wird statt DateTime Boolean

$dateInterval = new \DateInterval('P1DT6H'); 
$snoozedTo = date_add($sickNote->getSickTo(), $dateInterval); 
$channelUser->setSnoozedTo($snoozedTo); 
$this->em->persist($channelUser); 

In meiner Unittests bekomme ich folgende Fehlermeldung:

date_add() expects parameter 1 to be DateTime, boolean given 

So verdoppeln ich überprüfen, ob $sickNote->getSickTo() wirklich eine DateTime zurückgibt. Ein dump() kehrt:

DateTime {#17791 
    +"date": "2018-01-01 06:00:00.000000" 
    +"timezone_type": 3 
    +"timezone": "UTC" 
} 

get_class() auf dem Objekt zurückgibt DateTime.

Hier ist zusätzlich meine Getter-Methode für das Feld:

/** 
* Get sickTo 
* @return Date 
*/ 
public function getSickTo() { 
    return $this->sickTo; 
} 

Warum date_add ein Boolean bekommt und nicht das DateTime Objekt?

Bearbeiten: Ich habe auch versucht, die Objet-Methode DateTime::add(). Gleiches Ergebnis.

Edit²: Hier ist meine Erklärung von sickTo:

/** 
* @var datetime $sickTo 
* @ORM\Column(type="date", nullable=true) 
* @Assert\Date() 
*/ 
protected $sickTo; 
+1

Können Sie die Erklärung von 'sickTo' zeigen? –

+0

Ich habe meine Frage dazu bearbeitet. – mgluesenkamp

+1

wenn Sie '@var \ DateTime' und' type = "datetime" 'versuchen? (Vergessen Sie nicht, Ihre Datenbank zu aktualisieren) –

Antwort

0

Die Erklärung von sickTo falsch ist. Sie deklarieren es als ein Datum, aber Sie verwenden ein Datetime. Versuchen Sie, das mit etwas in der Art zu ändern:

/** 
* @var \DateTime $sickTo 
* @ORM\Column(type="datetime", nullable=true) 
* @Assert\DateTime() 
*/ 

protected $sickTo; 
Verwandte Themen