使用推进ORM,如何删除对象的所有相关记录?

使用推进ORM,如何删除对象的所有相关记录?,orm,propel,Orm,Propel,我有一个很简单的问题。我在数据库里储存线索。这些领导有一个或多个社区利益。我使用的表名为“lead”、“community”和“lead\u communities”联接表。删除潜在客户所有社区利益的最佳方式是什么 这里有更多的细节。推进模式如下所示: <table name="community"> <column name="id" type="INTEGER" required="true" primaryKey="true" autoIncremen

我有一个很简单的问题。我在数据库里储存线索。这些领导有一个或多个社区利益。我使用的表名为“lead”、“community”和“lead\u communities”联接表。删除潜在客户所有社区利益的最佳方式是什么

这里有更多的细节。推进模式如下所示:

    <table name="community">
      <column name="id" type="INTEGER" required="true" primaryKey="true" autoIncrement="true" />
      <column name="name" type="VARCHAR" size="255" />
      <column name="address" type="VARCHAR" size="255" />
      etc...


    <table name="lead_communities">
      <column name="id" type="INTEGER" required="true" primaryKey="true" autoIncrement="true"/>
      <column name="lead_id" type="INTEGER" />
      <column name="community_id" type="INTEGER" />
      <column name="created_date" type="DATE" size="4" />
      <foreign-key foreignTable="community" refPhpName="Lead_Communities">
        <reference local="community_id" foreign="id"/>
      </foreign-key>
      <foreign-key foreignTable="lead" refPhpName="Lead_Communities">
        <reference local="lead_id" foreign="id"/>
      </foreign-key>      
    </table>  

    <table name="lead">
      <column name="id" type="INTEGER" required="true" primaryKey="true" autoIncrement="true"/>
      <column name="salutation" type="VARCHAR" size="20" />
      <column name="first_name" type="VARCHAR" size="255" defaultValue="" />
      <column name="last_name" type="VARCHAR" size="255" defaultValue="" />
      <column name="email" type="VARCHAR" size="255" defaultValue="" />
      etc..
因此,我希望做的是:

$lead->deleteLeadCommunities();

在没有任何其他上下文的情况下,我能想到的最简单的方法就是使用以下命令对联接表进行查询:

需要明确的是,没有像您想要的那样生成方法(
deleteLeadCommunities
),但是为了方便起见,您可以随时编写它,并将示例代码中的
$lead
替换为
$this
。所以在
Lead.php中:

public function deleteLeadCommunities() {
  return LeadCommunitiesQuery::create()
           ->filterByLead($this)
           ->delete();
}

非常感谢。我喜欢你的解决方案。
$numDeleted = LeadCommunitiesQuery::create()
                ->filterByLead($lead)
                ->delete();
public function deleteLeadCommunities() {
  return LeadCommunitiesQuery::create()
           ->filterByLead($this)
           ->delete();
}