私は、関係OneToMany、Project
およびServices
を持つ2つのエンティティを持っています。今私はすべてのサービスをproject_idで削除したいと思います。Doctrine 2 delete with query builder
初の試み:
$qb = $em->createQueryBuilder();
$qb->delete('Services','s');
$qb->andWhere($qb->expr()->eq('s.project_id', ':id'));
$qb->setParameter(':id',$project->getId());
この試みは、例外Entity Service does not have property project_id
で失敗します。そしてそれは事実です、そのプロパティは存在しません、それは外部キーとしてデータベーステーブル内にのみあります。
第二の試み:
$qb = $em->createQueryBuilder();
$qb->delete('Services','s')->innerJoin('s.project','p');
$qb->andWhere($qb->expr()->eq('p.id', ':id'));
$qb->setParameter(':id',$project->getId());
この1 generetateあまりにも非有効なDQLクエリ。
すべてのアイデアと例を歓迎します。
3行目は次のように書き直すことができます。$ qb-> where( 's.project =:project'); – Oli