0

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) を複製し、他の行は 2 番目のオブジェクトを複製します。配列としてダンプする場合:

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

すべての行の配列が異なります。オブジェクトの何が問題になっていますか?

4

1 に答える 1

0

問題を解決しました。Doctrine2 のバグです。ここでバグレポートを作成しましたhttp://doctrine-project.org/jira/browse/DDC-1780

プロジェクトで修正できます (Doctrine ライブラリ ファイルを編集できる場合)。追加するだけ

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

foreach ループで。

于 2012-04-16T10:30:24.300 に答える