我有了这样一个场景,还有很多以两个表之间一对多的关系(与他们之间的第三个“联想”表)的数据库:Zend框架单页的形式与许多处理很多关系
如:
Table 1 : user (primary key id)
Table 2 : contact_info (primary key id)
Associative table: user_has_contact_info (primary key id, foreign keys: user_id and contact_info_id)
现在应用程序的要求是要能够在同一个页面上添加多个“contact_info”项目,创建一个用户记录:
如:(表格)
UserName: ___________
Contact Type Contact Detail
Phone 123-4567
Email [email protected]
_________V _______________ [Add Contact Button]
... plus more fields for the user table ...
所以在我上面的示例中,我有用户名字段(将放在用户表中),一个与用户相关的所有联系人信息记录表(在用户名字段中),这些记录将进入contact_info表,然后是contact_type和contact_details的表单元素(在表格下方各自的列下方)(带有添加按钮?),这会将联系人信息添加到联系人的“表格”中。然后在下面的所有部分,更多属于用户表的字段。
如果您追踪我到目前为止,我面临的问题是客户希望这显示在单个窗体而不是多个页面或以两种形式分开,流程必须“看起来”像一个单一的窗体(即使这些元素将属于不同的数据库表
其次,将数据放入contact_info表中已经足够简单了,但是直到剩下的'user'字段被填写并且没有实际的user_id被生成用户记录被更新,因此,我无法看到如何在user_has_contact_info中添加关联记录,而不先保存用户记录并将联系人信息添加到第二个。
Fina lly,首选是避免javascript(尽管没有完全排除,因为几乎任何解决方案都要求JavaScript或者页面刷新部分表单字段数据保留,甚至可能验证和过滤器问题 - 还没有得到远远)
所以我最终的问题是什么是在上面的场景中使用Zend_Form处理多对多数据库表关系的最佳方法。我可能会解决这个问题,并错过这里的简单解决方案,并期待不同的观点。
请注意,这不是关于如何设计数据库的问题,而是如何创建zend表单来处理数据库的方式。
只是检查:你是否需要模式中的多对多?似乎联系人可能会分配给单个用户,尽管单个用户可能有多个联系人,因此您可能只需要一对多的联系人。无需关联表,使其更容易一些。 –
@DavidWeinraub是的,我想再次看看我的上面的例子,这不是一个很好的多对多的例子。在我现实生活中的数据库表结构中,我正在处理几个多对多的表关系,这些表关系对许多必需的字段来说都是很多的。我试图提供一个简单的例子来说明我的观点。不过,我同意,我的例子有点失败! :)是去概念,不一定确切的细节。 –