5

sql-view をDoctrine2にマッピングしたいと思います。

このビューは、ビューを生成する SQL を書き直さなくても表示されるいくつかの統計を含むTempTableです。

テーブルのようにマッピングしようとしていますが、スキーマを更新するとビューが削除され、テーブルが作成されます

NativeSQLでも試してみます...

public function getMessages(\Project\Bundle\MyBundle\Entity\User $user) {
    $rsm = new \Doctrine\ORM\Query\ResultSetMapping();
    $rsm->addEntityResult('MessageCenter', 'v');
    $rsm->addFieldResult('v', 'user_id', 'user_id');
    $rsm->addFieldResult('v', 'tot', 'tot');
    $rsm->addFieldResult('v', 'read', 'read');
    $rsm->addFieldResult('v', 'to_read', 'to_read');
    $rsm->addFieldResult('v', 'stored', 'stored');
    $rsm->addFieldResult('v', 'spam', 'spam');

    $q = "SELECT * FROM message_stats_view WHERE user_id = ?";
    $rsm = new \Doctrine\ORM\Query\ResultSetMapping;
    $query = $this->getEntityManager()->createNativeQuery($q, $rsm);
    $query->setParameter(1, $user->getId());
    echo $query->getSQL();
    var_dump($query->execute());
    exit;
}

getter と setter を使用してエンティティ MessageCenter を作成しましたが、出力は次のようになります。

SELECT * FROM message_stats_view WHERE user_id = ?
array
  empty
4

1 に答える 1