【发布时间】:2015-09-09 11:19:10
【问题描述】:
在我看来,使用 ORM 的原因之一是防止表中出现重复记录。为此,可以创建外键将多个表链接在一起。
我的问题如下:
表“地址”:
+---------------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+---------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| country_id | int(11) | NO | | NULL | |
| city_id | int(11) | NO | | NULL | |
| street_id | int(11) | NO | | NULL | |
| zip_id | int(11) | NO | | NULL | |
| street_number | int(11) | NO | | NULL | |
+---------------+---------+------+-----+---------+----------------+
表“国家”:
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(45) | NO | UNI | NULL | |
+-------+-------------+------+-----+---------+----------------+
(其他表的逻辑相同)
当我尝试使用已经存在的国家/地区名称保存条目时,我会收到一个 mysql 唯一错误。这很清楚,绝对没问题。一切都按预期进行。
问题是:用已经存在的(唯一)关联保存实体的最佳做法是什么,以及如何获取现有(例如 country.id)的 id(外键)将其链接到地址表?
有适合我的蛋糕魔法吗?
提前致谢,
菲尔
【问题讨论】:
-
保存具有(唯一)关联已存在的实体的最佳做法是什么?什么实体?有哪些独特的联想?请澄清您的问题(例如,显示您拥有并尝试保存的示例数据。)如何获取现有(例如 country.id)的 id(外键)以将其链接到地址表? 这似乎是相关模型上 find 方法的基本/初步使用。再次,使用示例数据作为您尝试解决的问题的示例将帮助其他人提供更详细的答案。
-
在创建地址时,您肯定不会创建国家/地区 - 您将使用选择(或类似的)并仅指定 address.country_id。您提出问题的方式很奇怪 - 但问题中没有代码。
标签: php mysql cakephp orm associations