かなり単純なことなのに、これがわからないようです。
ImageエンティティとArticleエンティティがあります。同じ画像を多くの記事で使用できますが、各記事は1つの画像しか持てないため、OneToMany<->ManyToOneとしてマッピングされます。
ここで、記事が関連付けられていない画像のみを選択する必要があります。どうすればよいですか?
私は試した:
$repository->createQueryBuilder('i')
->select('i')
->where('count(i.articles) = NULL');
しかし、それは機能しません。どうすればこれを達成できますか?
アップデート
私はこれをTypeクラスで使用しており、未使用のエンティティのみを含むエンティティフィールドを作成しようとしています。関連する場合は、完全な関数コードを次に示します。
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('images', 'entity', array(
'class' => 'BloggerBlogBundle:Image',
'query_builder' =>
function(EntityRepository $er)
{
return $er->createQueryBuilder('i')->.........here goes query creation
},
)
)
;
}
必要に応じて、ここにも関連付けがあります。
画像クラス:
/**
* @ORM\OneToMany(targetEntity="Blog", mappedBy="image")
*/
protected $articles;
ブログクラス:
/**
* @ORM\ManyToOne(targetEntity="Image", inversedBy="articles")
*/
protected $image;