我无法理解其中的区别。
3 回答
从数据库的角度来看,它们完全相同。它们具有所有相同的字段(id、user_guid、entity_guid 等),因此为什么不能立即清楚它们的用途是有道理的。
我喜欢这样想:
- 元数据 == 目标(属性)
- 注释 == 主观(意见)
元数据是一种向实体动态添加属性的方法。元数据应该描述实体的实际情况——大卫关于汽车颜色的例子很好。其他示例是一本书的 isbn 编号,或事件的位置。
创建实体后添加到实体的任何新信息都应该是注释。这就是为什么评级、喜欢等是注释而不是元数据的原因——“评级”不是实体的属性,它只是某人对实体质量的看法。
API 体现了这一区别。元数据的分配就像它们是实体的属性一样。例如:
$event->location = '';
注释没有等效的简写。
ElggMetadata 用于存储有关实际 Elgg 实体的信息。因此,如果您创建了一个 Car 实体并想说明它是什么颜色,那将是 ElggMetadata 的完美用例。
ElggAnnotion 用于向实体添加附加信息(评论、评论等)。因此,在上面的汽车实体示例中,您可以允许用户评论或查看它。这是 ElggAnnotation 的完美案例。
ElggMetadata 是键值对之间的 LINK 存储位置,与任何实体相关联。但是实际的键和值将存储在 ElggMetastrings 中(遵循 EAV 模型)。
例如:
$user->gender=male;
相比之下,ElggAnnotation 存储了一组相当严格的属性,如评论、任何实体的评级