Php Doctrine2 getResult()复制对象

Php Doctrine2 getResult()复制对象,php,doctrine-orm,Php,Doctrine Orm,我在条令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-&g

我在条令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

所有行在数组中都不同。对象怎么了?

我解决了一个问题。这是教义中的一个错误。我在这里创建了bug报告

如果可以编辑条令库文件,则可以在项目中修复。 加上

if ($id[$fieldName] instanceof \DateTime) { 
    $id[$fieldName] = $id[$fieldName]->getTimestamp(); 
}`

在foreach循环中。

我将检查生成的SQL$query->getSql;SQL看起来像是选择c0_u.PSiteID作为PSiteID0,c0_u.PSiteClusterDate作为PSiteClusterDate1,c0_u.PublisherID作为PublisherID2,c0_Id.Views作为Views4,c0_Id。单击作为Clicks6。。。来自集群c0_u0,其中c0_0.PublisherID=?返回一个正常的结果,如数组中的结果也被复制?否。复制对象仅作为函数getResult的结果出现。我不知道为什么会发生这种情况=我应该指定:getArrayResult-返回正确的结果数组,其中所有行都是唯一的。同样的结果是将直接请求带回数据库query=getSQL。函数getResult返回数组,其中前四行包含一个对象及其链接,其他行包含第二个对象及其链接。最后,所有结果都包含8行,但函数getResult的结果只包含两个对象,其他6行包含此对象的链接。对不起,我的英语不好=