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