我在数据库中保存数据时遇到问题。 Doctrine命令 - flush()返回
错误:在/Users/magdalena/Sites/webping/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/DateTimeType.php第53行中的非对象上调用成员函数format()
每当我尝试保存它时。我多次检查日期格式。这些是我想保存的日期:
$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()数据时都会发生此错误。即使我没有改变任何约会。以前的代码没有错误。这可能与缓存有关吗?
答案 0 :(得分:1)
CurrentDate看起来确定它是一个不会出现问题的DateTime对象,另一方面$this->setEndDate($data['endDate']);
这个字段我不知道它是哪种类型但是我猜这是你的问题,否则告诉我们您的实体获得更多帮助。并检查你的endDate,如果它是DateTime对象或只是字符串。
答案 1 :(得分:0)
在设置新数据和flush()之前调用$ em-> clear()时,它开始工作。这是一个好方法吗?