32

OneToManyProjectServices. 今、私はすべてのサービスを project_id で削除したいと考えています。

最初の試み:

$qb = $em->createQueryBuilder();
$qb->delete('Services','s');
$qb->andWhere($qb->expr()->eq('s.project_id', ':id'));
$qb->setParameter(':id',$project->getId());

この試行は Exception で失敗しますEntity Service does not have property project_id。確かに、そのプロパティは存在しません。外部キーとしてデータベース テーブルにのみ存在します。

2 回目の試行:

$qb = $em->createQueryBuilder();
$qb->delete('Services','s')->innerJoin('s.project','p');
$qb->andWhere($qb->expr()->eq('p.id', ':id'));
$qb->setParameter(':id',$project->getId());

これは、無効な DQL クエリも生成します。

どんなアイデアや例も歓迎します。

4

2 に答える 2

71

SQL ではなく DQL を使用しているため、条件で ID を参照しないでください。代わりにオブジェクトを参照してください。

したがって、最初の例は次のように変更されます。

$qb = $em->createQueryBuilder();
$qb->delete('Services', 's');
$qb->where('s.project = :project');
$qb->setParameter('project', $project);
于 2013-03-21T18:36:57.587 に答える