У меня проблема с сохранением данных в базе данных. Команда Doctrine - flush() возвращает
Ошибка. Вызовите функцию-член() для не-объекта в /Users/magdalena/Sites/webping/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/DateTimeType.php строке 53
каждый раз, когда я пытаюсь его сохранить. Я много раз проверял формат даты. Это дата, которую я хотел бы сохранить:
$currentDate = new \DateTime('now');
which generate:
["date"]=> object(DateTime)#712 (3) {
["date"]=>
string(26) "2015-05-25 11:57:19.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(13) "Europe/Warsaw" }
Что с этим не так?
Это функция, которая сохраняет данные:
$this->setUserId($data['userId']);
$this->setPackageName($data['packageName']);
$this->setPackageId($data['packageId']);
$this->setUnitPrice($data['unitPrice']);
$this->setService($data['service']);
$this->setSms($data['sms']);
$this->setUpgrade(0);
$this->setDate($currentDate);
$this->setEndDate($data['endDate']);
$this->setPaymentType($data['paymentType']);
$this->setCompanyName($user['companyName']);
$this->setCity($user['city']);
$this->setAddress($user['address']);
$this->setPostalCode($user['postalCode']);
$this->setNip($user['nip']);
$this->setStatus(0);
$em = $em->getManager();
$em->persist($this);
$em->flush();
и данные:
$data:
array(10) {
["userId"]=>
int(287)
["packageName"]=>
string(8) "standard"
["packageId"]=>
int(7)
["sms"]=>
int(100)
["service"]=>
int(10)
["endDate"]=>
object(DateTime)#742 (3) {
["date"]=>
string(26) "2015-06-27 12:00:00.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(13) "Europe/Warsaw"
}
["unitPrice"]=>
string(5) "59.99"
["date"]=>
object(DateTime)#715 (3) {
["date"]=>
string(26) "2015-05-25 12:15:09.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(13) "Europe/Warsaw"
}
["upgrade"]=>
NULL
["paymentType"]=>
string(7) "przelew"
}
$user:
array(6) {
["companyName"]=>
string(8) "vdbfgbfg"
["address"]=>
string(5) "fgbfg"
["city"]=>
string(5) "bfgbf"
["postalCode"]=>
string(6) "23-098"
["nip"]=>
string(10) "1234563218"
["payment"]=>
string(7) "przelew"
}
РЕДАКТИРОВАТЬ
Я заметил, что эта ошибка возникает каждый раз, когда я flash() данные в новом коде. Даже когда я не меняю дату. Предыдущий код работает без ошибок. Это может быть связано с кешем?
CurrentDate выглядит нормально, это объект DateTime, который не будет проблемой, с другой стороны $this->setEndDate($data['endDate']);
это поле, я не уверен, какой тип это, но я предполагаю, что это ваша проблема, иначе покажите нам свою сущность для получения дополнительной помощи. и проверьте свой endDate, если это объект DateTime или просто строка.
Он начал работать, когда я вызываю $em-> clear() перед установкой новых данных и flush(). Это хороший способ?