Symfony2,Doctrine - flush()返回format()错误

时间:2015-05-25 10:11:04

标签: php symfony doctrine-orm doctrine

我在数据库中保存数据时遇到问题。 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()数据时都会发生此错误。即使我没有改变任何约会。以前的代码没有错误。这可能与缓存有关吗?

2 个答案:

答案 0 :(得分:1)

CurrentDate看起来确定它是一个不会出现问题的DateTime对象,另一方面$this->setEndDate($data['endDate']);这个字段我不知道它是哪种类型但是我猜这是你的问题,否则告诉我们您的实体获得更多帮助。并检查你的endDate,如果它是DateTime对象或只是字符串。

答案 1 :(得分:0)

在设置新数据和flush()之前调用$ em-> clear()时,它开始工作。这是一个好方法吗?