5

据我了解,cakephp不支持数据库继承关系。但是,我想创建一个具有不同类型用户的数据库。

在这种情况下,存在三种类型的用户:SellerCustomerAdministrator。每个用户都应该有基本的用户信息,例如passwordusername等。
但是,每种类型的用户都有自己独特的数据集。例如,卖家可能有inventory_id,而客户可能有delivery_address等。

我一直在考虑在不破坏cakephp约定的情况下为这个问题创建一个解决方法。我打算在 User 表中创建三个额外的外键 ,admin_idseller_idcustomer_id它们链接到其他表。但是,知道这是一种IS-A关系 not HAS-A,我必须确保其中两个 id 是 NULL 值。因此,这种解决方法对我来说似乎很难看..

还有其他更简单、更好的方法吗?

4

2 回答 2

1

对于这种类型的数据库结构,我可能会考虑采用实体-属性-值模型。这意味着您的客户可能有一个delivery_address,您的用户可能有一个inventory_id,但就您在Cake 中的关系而言,您的用户和客户都只有一个attribute_id ...然后您可以创建另一个表来存储什么类型的属性可用。

这是最简单的形式,您的用户和客户将通过 hasMany(可能)关系附加到 *attribute_lookup* 或 *attribute_link* 表。该attribute_lookup/link 表将通过belongsTo/hasOne 关系连接到实际的属性类型和属性值模型。

如果您正确地规范化您的表格,您可以很好地遵守 Cake 关系约定。

您可以在此处阅读有关 EAV的更多信息。

于 2013-01-01T16:10:57.680 回答
1

我已经考虑这个问题一段时间了,我最终找到了一个解决方案。我想出的是一个可以在 CakePHP 之上使用的新 ORM。

它有点像 CakePHP 3.0 的工作方式,带有表示 id/model 的实体,但它更高级,支持多表继承和单表继承。

看看:https ://github.com/erobwen/Cream

于 2015-06-24T09:38:26.747 回答