Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Drupal 7 Node --> Fields Mapping In Database

I am trying to figure out how nodes are mapped back to the fields they contain for learning purposes. How is this done?

like image 569
Chris Muench Avatar asked Oct 14 '11 20:10

Chris Muench


1 Answers

In Drupal 7 you have entities and fields; fields are attached to entities. A node is an implementation of an entity (the node module implements hook_entity_info() and other such hooks) so it can have fields.

All field/entity relational data is stored in the tables field_data_field_x and field_revision_field_x or similar (the latter potentially storing revisions of field data if node revisions are enabled).

The entity_id column in those tables is the node's ID, and the bundle is the node's content type. The revision_id is the revision ID of the node, again only really useful if node revisions are enabled.

UPDATE

In Drupal terminology a content type is a bundle and bundles are attached to entities (in this case the node entity). When you create a new content type it gets stored in the node_type table, and when the caches are cleared (which invokes hook_entity_info on all modules) the node_entity_info() function builds up a list of bundles from the content types (have a look at the bit in that function that starts foreach (node_type_get_names() as $type => $name) {, node_type_get_names gets a list of all content types).

As discussed above fields can be attached to entities, so fields can be attached to nodes with a delta (if you like) of bundle.

like image 181
Clive Avatar answered Sep 25 '22 01:09

Clive