Symfony1 Symfony 1.4中用户提交表单数据的重复查找和潜在修改

Symfony1 Symfony 1.4中用户提交表单数据的重复查找和潜在修改,symfony1,symfony-1.4,Symfony1,Symfony 1.4,我的应用程序有3种主要对象类型:个人、家庭和办公室。每个对象都有一个与其关联的位置(lat、lng和地址),因此每个表(个人、家庭和办公室)都包含一个Location_id列,映射到Location表中的一个位置 个人、家庭和办公室都是用一个简单的表单创建的。在每个对象创建表单(PersonForm.class.php、HomeForm.class.php和OfficeForm.class.php)中,我都嵌入了LocationForm(LocationForm.class.php) 一切正常,

我的应用程序有3种主要对象类型:个人、家庭和办公室。每个对象都有一个与其关联的位置(lat、lng和地址),因此每个表(个人、家庭和办公室)都包含一个Location_id列,映射到Location表中的一个位置

个人、家庭和办公室都是用一个简单的表单创建的。在每个对象创建表单(PersonForm.class.php、HomeForm.class.php和OfficeForm.class.php)中,我都嵌入了LocationForm(LocationForm.class.php)

一切正常,用户提交有关个人、家庭和/或办公室的数据(包括位置),数据正确保存在数据库中

因此,我的问题是:在这种情况下,我的多个主要对象可以拥有/共享完全相同的位置(lat、lng和地址)。例如,办公室和家,或者一个人和家都可以共享同一个位置。也就是说,每当创建对象时,都会将一个新位置插入到位置表中

在用户提交表单之后,但在将表单保存到db之前,我想查询位置表以查找匹配项(正在提交位置),如果匹配,则将现有位置与新创建的Person、Home或Office对象关联


我读到的大部分内容都指向覆盖对象的save()函数,但如果是这种情况,并且我在位置模型中覆盖save()函数并找到匹配项,那么如何创建与正在创建/保存的新对象的关联(正在插入的对象应获取结果位置匹配的位置\u id)?

您可以为您的个人/家庭/办公室表单编写
预保存
函数。如果您找到
位置
对象,只需将其插入表单中,这样它就不会被保存。您还可以为
位置
对象编写
预插入
函数,如果找到
位置
对象,它将完全停止保存杰特。