the Doctrine Docsに従って基準を設定しようとしています。Doctrine 2.3基準。関連するオブジェクトへのアクセス
残念ながら、関連するオブジェクトの属性にアクセスする方法は教えていません。私に例を挙げてみましょう。
私は製品のArrayCollectionを持っています。すべての製品にカテゴリーがあります。カテゴリ名のArrayCollectionをフィルタリングする必要があります。今、私は次のように条件を設定しようとしています:
$criteria = Criteria::create()
->where(Criteria::expr()->eq("category.name", "SomeCategoryName"));
今、私は次の例外を取得:私は、関連するオブジェクトにアクセスするにはどうすればよい
An exception has been thrown during the rendering of a template ("Unrecognized field: category.name")
を?
ありがとうございました。私はあなたの 'Ctriteria'を月曜日にテストします。今は私のワークステーションにアクセスできない。それが動作すれば私はあなたに知らせます。しかし、フィルタはすべてのカテゴリーが熱心に読み込まれ、ディスク上でローカルに処理されるため、私の考えでは悪い考えです(DB上で行うよりもパフォーマンスが悪くないでしょう)。 – Robin
あなたは間違っています。 Criteriaは、クエリー(フェッチされるデータ)とArrayCollection(すでにフェッチされたデータ)で使用できます。フェッチ・ジョインを作成しなかった場合は、criteriaまたはfilter()を使用するかどうかにかかわらず、リレーションは熱心にロードされます。あなたはDBがあなたに最高のパフォーマンスを与えるので、WHEREとの組み合わせでフェッチ結合を使用するのが最良です。それはあなたの質問についてではありませんでしたが。 – Flip
エンティティに注釈を付けることができると思って、遅延ロードされていると思いますか? http:// docs。doctrine-project.org/en/2.0.x/reference/annotations-reference.html#annref-manytoone。 'ArrayCollection'レイジーをロードしないでしょうか?それが逆のアノテーションなので、それはうまくいかないでしょうか? – Robin