ExpressionEngine® User Guide

Legacy Documentation

You are using the documentation for version 4.3.8. Go here for the latest version.

Relationships Fieldtype Extension Hooks

relationships_display_field

relationships_display_field($entry_id, $field_id, $sql)

Allows developers to modify the existing query that retrieves related entries for the publish field or to perform their own queries to return related entries.

How it’s called:

if (ee()->extensions->active_hook('relationships_display_field') === TRUE)
{
    $related = ee()->extensions->call(
        'relationships_display_field',
        $entry_id,
        $this->field_id,
        ee()->db->_compile_select()
    );
}
else
{
    $related = ee()->db->get()->result_array();
}

Note

To use this hook, you can either add to the existing Active Record call, or call ee()->db->_reset_select() to cancel the Active Record call and start your own, or modify the passed compiled SQL.

Parameters:
  • $entry_id (int) – Entry ID of entry being edited.
  • $field_id (int) – Field ID of field currently being loaded.
  • $sql (string) – Compiled SQL about to be run to gather related entries.
Returns:

Result Array of query result.

Return type:

Array

New in version 2.6.0.

relationships_display_field_options

relationships_display_field_options($entry_id, $field_id, $sql)

Allows developers to add additional filters to the entries that populate the select options available to the relationship field.

How it’s called:

if (ee()->extensions->active_hook('relationships_display_field_options') === TRUE)
{
    ee()->extensions->call(
        'relationships_display_field_options',
        $entries,
        $this->field_id,
        $this->settings
    );
}
Parameters:
  • $entries (object) – ChannelEntry model object.
  • $field_id (int) – Field ID of field currently being loaded.
  • $settings (array) – The field settings for the field being loaded.
Return type:

Void

New in version 3.3.0.

relationships_post_save

relationships_post_save($ships, $entry_id, $field_id)

Allows developers to modify or add to the relationships array before saving.

How it’s called:

$ships = ee()->extensions->call('relationships_post_save', $ships, $entry_id, $field_id);
Parameters:
  • $ships (array) – Array of entry IDs to be related to the entry.
  • $entry_id (int) – Entry ID of entry being saved.
  • $field_id (int) – Field ID of field currently being saved.
Returns:

Array of relationships.

Return type:

Array

New in version 2.6.0.

relationships_query

relationships_query($field_name, $entry_ids, $depths, $sql)

Allows developers to modify the existing query that retrieves related entries for front end tag parsing or to perform their own queries to return related entries.

How it’s called:

if (ee()->extensions->active_hook('relationships_query') === TRUE)
{
    $result = ee()->extensions->call(
        'relationships_query',
        $node->field_name(),
        $entry_ids,
        $depths,
        $db->_compile_select()
    );
}
else
{
    $result = $db->get()->result_array();
}

Note

To use this hook, you can either add to the existing Active Record call, or call ee()->db->_reset_select() to cancel the Active Record call and start your own, or modify the passed compiled SQL.

Parameters:
  • $field_name (string) – Name of current node being parsed.
  • $entry_ids (int) – Entry IDs of entries being queried for.
  • $depths (array) – Depth of branches.
  • $sql (string) – Compiled SQL about to be run to gather related entries.
Returns:

Result Array of query result.

Return type:

Array

New in version 2.6.0.

relationships_query_result

relationships_query_result($entry_lookup)

Allows developers to modify or add columns to the relationships array. Do not use this hook to remove elements.

How it’s called:

$entry_lookup = ee()->extensions->call('relationships_query_result', $entry_lookup);
Parameters:
  • $entry_lookup (array) – Array of entry IDs to rows for all relationship tags.
Returns:

Array of entry IDs to rows.

Return type:

Array

New in version 2.7.1.

relationships_modify_rows

relationships_modify_rows($rows, $node)

Allows developers to modify or add to the relationship rows right before parsing happens.

How it’s called:

$rows = ee()->extensions->call('relationships_modify_rows', $rows, $node);
Parameters:
  • $rows (array) – Array of entry IDs to rows for this tag.
  • $node (ParseNode) – Parse node for the current relationships tag.
Returns:

Array of entry ids to rows for this tag.

Return type:

Array

New in version 2.7.1.