Doctrine2 getResult()重复对象

时间:2012-04-12 09:38:39

标签: php doctrine-orm

我在Doctrine 2中有一个奇怪的错误 存储库功能

$query = $this->_em->createQuery('SELECT c FROM \Model\Entity\Cluster c
                                  WHERE c.publisherid = :publisherid');
$query->setParameter("publisherid", (int)$publisher_id);
var_dump($query->getResult());
var_dump($query->getArrayResult());

我们拥有什么

物件:

array (size=8)
  0 => 
    object(Model\Entity\Cluster)[**396**]
      private 'psiteid' => int 215
      private 'psiteclusterdate' => 
        object(DateTime)[371]
          public 'date' => string '**2011-12-20** 00:00:00' (length=19)
          public 'timezone_type' => int 3
          public 'timezone' => string 'Europe/Moscow' (length=13)
      private 'publisherid' => int 276
      private 'views' => int 14657
      private 'clicks' => int 6220
      ...

  1 => 
    object(Model\Entity\Psitecluster)[**396**]
      private 'psiteid' => int 215
      private 'psiteclusterdate' => 
        object(DateTime)[371]
          public 'date' => string '**2011-12-20** 00:00:00' (length=19)
          public 'timezone_type' => int 3
          public 'timezone' => string 'Europe/Moscow' (length=13)
      private 'publisherid' => int 276
      private 'views' => int 14657
      private 'clicks' => int 6220
      ...

使用键0-3的行将此对象(396)和其他行共同化为第二个对象。 当我转储为数组时:

array (size=8)
  0 => 
    array (size=22)
      'psiteid' => int 215
      'psiteclusterdate' => 
        object(DateTime)[367]
          public 'date' => string '**2011-12-20** 00:00:00' (length=19)
          public 'timezone_type' => int 3
          public 'timezone' => string 'Europe/Moscow' (length=13)
      'publisherid' => int 276
      'views' => int 14657
      'clicks' => int 6220
        ....

  1 => 
    array (size=22)
      'psiteid' => int 215
      'psiteclusterdate' => 
        object(DateTime)[396]
          public 'date' => string '2011-12-21 00:00:00' (length=19)
          public 'timezone_type' => int 3
          public 'timezone' => string 'Europe/Moscow' (length=13)
      'publisherid' => int 276
      'views' => int 10166
      'clicks' => int 4028

数组中的所有行都不同。对象有什么问题?

1 个答案:

答案 0 :(得分:0)

我解决了一个问题。这是Doctrine2中的一个错误。我在这里创建了错误报告http://doctrine-project.org/jira/browse/DDC-1780

您可以在项目中修复(如果您可以编辑Doctrine库文件)。 只需添加

if ($id[$fieldName] instanceof \DateTime) { 
    $id[$fieldName] = $id[$fieldName]->getTimestamp(); 
}`
在foreach循环中

相关问题