Relation is an API module and storage model for both simple and the most complex relations between entities. The module can handle both directional and symmetrical relations very well.
Relations are entities and can therefore have fields. This makes Relation the most flexible and powerful relation model out there.
Examples
John, Jen and Jack are siblings. This relation are symmetrical and points in all directions.
|-- John
|
Are siblings --|-- Jen
(relation) |
|-- JackCompanyA a made a donation to PartyB, with a transaction via BankC. Both relations (donation and transaction) are directional.
CompanyA --> DonationX --> PartyB
(node) (relation) (node)
DonationX --> TransactionY --> BankC
(relation) (relation) (node)In the example above DonationX can have an integer field for the donation amount. This is something that no other relationship models in Drupal supports.
How to use
The Learn Relation module screencast series is a good start if you want to learn how to use this module.
Configuring and creating relations
The Relation module provides two blocks that can be used to create relations. It's very simple and effective. It can also be done using Rules.
- Screencast on configuring Relation and Entity Collector
- Relation Add Block screencast
- Creating relations with Rules screencast
Listing relations
The Relation module has a very effective Views integration, both functionality wise and performance wise.
Other cool/crazy stuff
- Create graphs of all relations on your site with Graph API
- Create relations from the node form with Relation Select, also with a screencast
The future
Drupal (core and contrib) maintains too many different (inefficient) relation models (node authors, node comments, comment replies, entity references etc.). The goal is to replace them all with Relation module.
Credits
Credit goes to all the maintainers for building the module and to Itangalo for creating screencast documentation for this module. ITV started sponsoring chx's work on relation on December 6, 2011.
Rationale
While a similar module could be built based on Entityreference and Entity Construction Kit (ECK) by creating a custom entity and adding entity reference fields to it, this hypothetical module would not be able to
- refer different kinds of entities for one endpoint
- handle symmetrical relations in one API (for eg. a single rule can be fired for both ends of the relationship)
- list siblings with Views
Also, relation, while very capable, is a small module which works with many contrib modules but requires none. We keep the API module as small as possible, adding new features into submodules as much as possible.
Downloads
Recommended releases
Development releases
Project Information
- Maintenance status: Actively maintained
- Development status: Under active development
- Reported installs: 2240 sites currently report using this module. View usage statistics.
- Automated tests: Enabled
- Last modified: January 21, 2012