ここのドキュメントで説明されているように、DoctrineモデルクラスでカスタムfindOneByJoinedToCategory($ id)関数を設定する例に従いました。
http://symfony.com/doc/current/book/doctrine.html
私の場合、一連の属性とこの関数を含むTestVendorCategoryというモデルクラスがあります。
public function findOneByNameJoinedToVendorCategoryMappings($vendorCategoryName)
{
$query = $this->getEntityManager()
->createQuery('
SELECT vc, vcm FROM TestCoreBundle:VendorCategory vc
JOIN vcm.vendorCategoryMapping vcm
WHERE vc.name = :name'
)->setParameter('name', $vendorCategoryName);
try
{
return $query->getSingleResult();
}
catch (\Doctrine\ORM\NoResultException $e)
{
return null;
}
}
私のコントローラーでは、次のように呼んでいます。
$vendorCategoryMapping = $this->em->getRepository("TestCoreBundle:VendorCategory")->findOneByNameJoinedToVendorCategoryMappings($vendorCategoryName);
ブラウザに移動し、この呼び出しを含むこのアクションを実行すると、次のエラーメッセージが表示されます。
エンティティ'Test\ CoreBundle \ Entity\VendorCategory'にはフィールド'nameJoinedToVendorCategoryMappings'がありません。したがって、エンティティのリポジトリで「findOneByNameJoinedToVendorCategoryMappings」を呼び出すことはできません。
Symfony 2.1は、findOneBy ...()メソッドに既存のフィールドの名前のみを反映させ、カスタムの「JoinedTo...」タイプのメソッドを反映させたくないようです。何か足りないのでしょうか?ドキュメントには、おそらく機能するこのような例が示されています。アノテーションを使用していますが、このメソッドにはアノテーションがありません。ありがとうございました!