首页 / 帖子
请问Drupal里什么时候适合创建entity?

请问创建entity有什么好处,什么时候适合用entity,什么时候适合用node type,有什么区别?

谢谢!

4个答案
闻涛
发布于:2015-04-19 15:29

node就是一种entity类型。如果有一种类型的数据,结构和node不同,并且量非常大,就应该新建一种entity类型,这样在添加数据的时候就不会在node表里面添加纪录。如果全都用node type的话,node表会非常庞大,这样会严重影响数据库性能。

刘伯彪
发布于:2015-04-23 10:03

个人观点

node type适合自定义field不多的时候、数据量不多的时候使用,并且很多模块对node的支持都是最好的。

自定entity适合自定义field非常多,数量大,以及有很多业务逻辑的时候使用。但是自定义entity也代表着很多东西都要自己编写,例如一个好用的后台管理表单,views的插件等。

YOYO
发布于:2015-04-23 11:08

可以参考一下我的译文,里面总结了一点东西
https://drupal.fleeto.us/translation/when-and-why-choose-use-drupal-custom-entity

刘伯彪
发布于:2015-05-01 08:26

个人认为,只要不想放到node表里面,或者说不是node/文章类似的内容,都可以自定义entity。

Drupal7的entity就是对数据库的一个抽象,这样自定义的数据表也可以抽象成一个entity,使用entity的API以及和drupal7里面的其他数据交互,比如flag等。

而Drupal6里面,如果要自定义一个数据表,能使用api不多,也几乎不能跟其他模块交互。


====-----==== 

举例来说:

在Drupal6里面,我定义一个数据表:用户积分,能使用的api就是sql查询还有一个db_save_record,除此之外跟Drupal其他数据不能深度集成。

在Drupal7里面,那我就可以定义一个Entity,这个Entity就能使用entity的API,查询,显示等。也可以使用FieldAPI给其动态添加字段,另外它是一个Entity,其他模块就能跟其交互,比如flag可以给其加flag,等等。这样实现了深度集成。

比Drupal6的集成上了一个层次。


因此,我觉得只要是自定义数据都可以使用自定义entity,并且hook不是太复杂。

当然,如果是简单的内容种类或者类似文章之类的内容,直接使用node和content type就可以。


一家之言,仅供参考。