我有一个非常简单的Propel问题。我在数据库中存储了潜在客户。这些线索有一个或多个社区兴趣。我正在使用的表名为'lead','community'和'lead_communities'连接表。删除所有潜在客户社区利益的最佳方式是什么?
以下是一些更多细节。 Propel架构如下所示:
<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 = LeadQuery::create()->filterByEmail($enauk)->findOne();
所以,我希望做的是:
$lead->deleteLeadCommunities();
答案 0 :(得分:6)
嗯,在没有任何其他上下文的情况下我能想到的最简单的方法就是使用delete()
call在连接表上进行查询:
$numDeleted = LeadCommunitiesQuery::create()
->filterByLead($lead)
->delete();
为了清楚起见,没有像你想要的那样生成方法(deleteLeadCommunities
),但为方便起见,你总是可以编写它,并在我的示例代码中用{{1}替换$lead
}。所以在$this
内:
Lead.php