php - 如何在一个表中使用多个外键引用 cakephp 中的另一个表

标签 php cakephp

使用 cakephp,我有一个通用地址表,我想将其链接到客户、供应商和联系人。大多数表只有 1 对 1 的关系,但我希望我的客户表有 2

也许是为了澄清: 我有一张客户表

id, int
mailing_address_id, int
billing_address_id, int

和地址表

id,int
addr, varchar
city, varchar
etc....

现在我知道我可以将 customer_id 放入地址表中。但我不想这样做,因为我有供应商表、联系人表和其他所有将使用地址表的表。 customer_id 不会真正与其他表相关。

我希望 Customer 模型自动链接这两个地址

最佳答案

听从 Travis Leleu 的建议 - 因为无论如何这是个好主意。

然后将枚举字段添加到名为 table_idAddresses 表中。 table_id 字段的值可以是“customer”、“vendor”、“contact”以及链接到地址表的任何其他表。

还包括一个名为 entity_id 的外键。此外键将是相应客户、供应商或其他任何内容的主键。

例如,当您想要某个供应商的账单地址时,在 $conditions 数组中添加:

'Address.entity_id'=>'123456'
'Address.table_id'=>'vendor'
'Address.type'=>'billing'

使用此设置,您可以根据需要引用 Addresses 表来拥有任意数量的表。

关于php - 如何在一个表中使用多个外键引用 cakephp 中的另一个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/655068/

相关文章:

PHP mysql 自动插入时间戳

CakePHP 3 无法保存关联模型

php - 在 cakephp 3 中创建适当的关联

cakephp - 我的 "pages"表会导致我的 cakePHP 设置出现问题吗

mysql - 将 CakePHP Web 应用程序的 phpMyAdmin 数据库迁移到 Windows Azure

php - 不能使用 mysql_real_escape_string

php - Onesignal Badge 计数增量不起作用

session - 访问模型中的 session

javascript - 在 PHP 生成的特定行 ID 之前追加

php - 名称第一个字母的样式组 PHP 结果