From 1fca71473e568314b5b62c95873a88464d4666db Mon Sep 17 00:00:00 2001 From: Jon Goldberg Date: Fri, 24 Mar 2023 16:22:38 -0400 Subject: [PATCH] EntityRef fields don't get returned and can't be joined in API4 --- Civi/Api4/Service/Schema/SchemaMapBuilder.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Civi/Api4/Service/Schema/SchemaMapBuilder.php b/Civi/Api4/Service/Schema/SchemaMapBuilder.php index 7401539fe2..539b56b909 100644 --- a/Civi/Api4/Service/Schema/SchemaMapBuilder.php +++ b/Civi/Api4/Service/Schema/SchemaMapBuilder.php @@ -107,7 +107,7 @@ class SchemaMapBuilder extends AutoService { } $fieldData = \CRM_Utils_SQL_Select::from('civicrm_custom_field f') ->join('custom_group', 'INNER JOIN civicrm_custom_group g ON g.id = f.custom_group_id') - ->select(['g.name as custom_group_name', 'g.table_name', 'g.is_multiple', 'f.name', 'f.data_type', 'label', 'column_name', 'option_group_id', 'serialize']) + ->select(['g.name as custom_group_name', 'g.table_name', 'g.is_multiple', 'f.name', 'f.data_type', 'label', 'column_name', 'option_group_id', 'serialize', 'fk_entity']) ->where('g.extends IN (@entity)', ['@entity' => $customInfo['extends']]) ->where('g.is_active') ->where('f.is_active') @@ -136,6 +136,12 @@ class SchemaMapBuilder extends AutoService { $customTable->addTableLink('entity_id', $joinable); } + if ($fieldData->data_type === 'EntityReference') { + $targetTable = \CRM_Core_BAO_CustomGroup::getTableNameByEntityName($fieldData->fk_entity); + $joinable = new Joinable($targetTable, 'id', $fieldData->name); + $customTable->addTableLink($fieldData->column_name, $joinable); + } + if ($fieldData->data_type === 'ContactReference') { $joinable = new Joinable('civicrm_contact', 'id', $fieldData->name); if ($fieldData->serialize) { -- 2.25.1