【问题标题】:Is it possible to setup an EAV structure on PHP ActiveRecord?是否可以在 PHP ActiveRecord 上设置 EAV 结构?
【发布时间】:2013-01-23 07:09:20
【问题描述】:

在 PHP ActiveRecord 中链接 EAV 表结构中的表以便我可以检索实体及其所有属性/值的最佳方法是什么?

表结构类似于。

person (entity)
personAttributes (attributes)
personAttributeVarchar (attribute values)
personAttributeText (attribute values)
personAttributeInt (attribute values)

我发现这个示例使用带有 EAV 模式的 Ruby 活动记录。可以使用php活动记录复制吗?

https://github.com/kostyantyn/example_active_record_as_eav/tree/master/app/models

【问题讨论】:

    标签: entity-attribute-value phpactiverecord


    【解决方案1】:

    我闻到的是 Magento 吗?我希望不是。如果是,那么 Magento 有自己的 EAV 映射方式,您不必重新发明它的方轮。它有适当的机制来做你想做的事情。

    如果这是您可以控制的:您不希望按类型分开表格。这是个坏主意。每个实体应该有一个 EAV 表,包含 entityattributevalue 列。 99% 在用例中,attributevalue 可以是 string 列(PDO 将所有列值返回为 string)。如果您想疯狂输入 (3D EAV),您可以将 attribute 强制为枚举或实体特定属性表的外键。

    对于活动记录类,创建一个关联的 $attributes 数组属性,并在 save() 期间执行原子修剪并应用(删除数组中不存在的所有值,插入或替换所有存在的值)。如果您选择了(更简单的)string attribute 路线,请为您的班级提供 ArrayAccess 修改 $attributes 以增加流畅度。您还可以通过跟踪是否使用 bool[] $attributeDiff 属性进行了修改来优化保存。

    【讨论】:

      猜你喜欢
      • 2011-09-13
      • 1970-01-01
      • 2010-12-16
      • 2019-07-20
      • 1970-01-01
      • 2011-03-06
      • 1970-01-01
      • 2016-09-07
      • 1970-01-01
      相关资源
      最近更新 更多