2012-01-14 7 views
1

しばらく私を悩ませている質問が少しあります。 Doctrine 2.0を私が取り組んでいるいくつかのプロジェクトに使用しています。私はちょっとした問題にぶつかりました。Doctrine 2.0 - 情報を表示するときにオブジェクトではなく配列に水和する

ほとんどのプロジェクトフロントエンドアプリケーションでは、オブジェクトではなく配列に水分を補給しています。

$entityManager = $this->getEntityManager(); 
$query = $entityManager->getQueryBuilder(); 
$query->select('something', 'somethingElse') 
     ->from('My\Entity\Location', 'something') 
     ->leftJoin('something.somethingelse', 'somethingElse') 
     ->where('something.id = :someId') 
     ->setParameter('someId', $someId) 
     ->getQuery(); 

$result = $query->getArrayResult(); 

今これは私が配列であるため、水和に我々のアプリケーションのフロントエンドにあるすべてのコードのためにやっているものです:私はこれを行う可能性があります教義のクエリを生成するときそれによって私が意味しますオブジェクトに水分補給するよりもはるかに速くなります。今私の質問はこれです:Doctrineを使用していて、実際にgetResult()を使用していない場合は、エンティティをビューに戻してそこで相互作用する必要がありますか?

私は管理領域で言うとエンティティを変更しようとしているときにgetResultまたはgetSingleResultを使用します。しかし、ちょうどフロントエンドの配列に情報を取得するために信じられないほど重いDoctrineを使ってちょっと奇妙だと感じています - とにかく私は単純なPDOで何かできるのですか?

私は十分な質問を明確にしました。

トム

答えて

2

Doctrineは追加の検証を行い、参加条件書き込みが少し楽になります。この利便性は無料ではないかもしれませんが、長期的なメンテナンスを検討する際にはまだ有効かもしれません。あなたがパフォーマンスについて心配しているなら、実際にどれだけ高価であるかを見るためにいくつかのプロファイリングを行うことをお勧めします。 Doctrineですべてのキャッシングが有効になると、直接クエリよりもはるかに高価になることはありません。

実際に余分なパフォーマンスを向上させる必要がある場合は、SQLに直接行くのに間違いはありませんが、実際に問題がプロファイリングされているという証拠が出る前に最適化を行うことをお勧めします。

関連する問題