Doctrine orm 级联删除不起作用。级联={quot;删除";}

Doctrine orm 级联删除不起作用。级联={quot;删除";},doctrine-orm,cascade,Doctrine Orm,Cascade,我使用的是教义2。我有一个自我连接的实体。联接中的两列是: /** * @ORM\ManyToOne(targetEntity="Entities\wall_post", inversedBy="shared_wallpost") * @ORM\JoinColumn(name="wall_post_id", referencedColumnName="id") */ private $shared_from_wallpost; /** * @ORM\OneToMany(targetEn

我使用的是教义2。我有一个自我连接的实体。联接中的两列是:

/**
 * @ORM\ManyToOne(targetEntity="Entities\wall_post", inversedBy="shared_wallpost")
 * @ORM\JoinColumn(name="wall_post_id", referencedColumnName="id")
 */
private $shared_from_wallpost;

/**
 * @ORM\OneToMany(targetEntity="Entities\wall_post", mappedBy="shared_from_wallpost", cascade={"remove"})
 */
private $shared_wallpost;
假设有两个帖子:一个id=1001第二个id=1002(有 墙柱(id=1001)

现在我想当我删除1001时,带有wall\u post\u id 1001的帖子会被删除 删除

为此,我使用cascade={“remove”},但它不起作用。 我要删除wallpost对象的查询:

//Removing record from table.

    $qb_1 = $em->createQueryBuilder();
                $qb_1->delete('\Entities\wall_post', 'wp');
                $qb_1->where( 'wp.id  = ?1' );
                $qb_1->setParameter('1', $wallpost_id );
                $qb_1->getQuery()->execute();
                $em -> flush();

对于级联={“删除”} 我们必须使用:

$em->remove($wallpost_obj);
            $em->flush();
我曾经用过:

 $qb_1 = $em->createQueryBuilder();
                $qb_1->delete('\Entities\wall_post', 'wp');
                $qb_1->where( 'wp.id  = ?1' );
                $qb_1->setParameter('1', $wallpost_id );
                $qb_1->getQuery()->execute();
                $em -> flush();

现在级联删除正在工作。

映射看起来正常。删除后是否刷新实体管理器?@manix我已添加我的查询以删除我的答案中的对象请查看。我正在使用$em->flush;但是没有用。谢谢。我不知道为什么您当前的代码不起作用,但您可以尝试将
onDelete=“CASCADE”
作为一个示例alternative@FuzzyTree我也试过了。但是没有成功。谢谢你们的意见,伙计们!更改
$qb_1->setParameter('1',$wallpost_id)至$qb_1->设置参数(1,$wallpost_id);