SearchKit: Many "group by" requests result in "illegal offset type" 500 error
Overview
Grouping results that contain both individual and organizations in the results leads to an "illegal offset type" error.
Reproduction steps
Import and run this SearchKit query.
[
[
"SavedSearch",
"save",
{
"records": [
{
"name": "illegal_offset_type",
"label": "illegal offset type",
"api_entity": "Contact",
"api_params": {
"version": 4,
"select": [
"COUNT(id) AS COUNT_id",
"GROUP_CONCAT(DISTINCT sort_name) AS GROUP_CONCAT_sort_name",
"GROUP_CONCAT(DISTINCT contact_type:label) AS GROUP_CONCAT_contact_type_label",
"GROUP_CONCAT(DISTINCT contact_sub_type:label) AS GROUP_CONCAT_contact_sub_type_label"
],
"orderBy": [],
"where": [],
"groupBy": [
"Contact_Address_contact_id_01.street_address"
],
"join": [
[
"Address AS Contact_Address_contact_id_01",
"LEFT",
[
"id",
"=",
"Contact_Address_contact_id_01.contact_id"
],
[
"Contact_Address_contact_id_01.is_primary",
"=",
true
]
]
],
"having": []
}
}
],
"match": [
"name"
]
}
]
]
Current behaviour
500 error:
TypeError: Illegal offset type in Civi\Api4\Utils\FormattingUtil::contactFieldsToRemove() (line 430 of /home/jon/local/civicrm-buildkit/build/dmaster/web/sites/all/modules/civicrm/Civi/Api4/Utils/FormattingUtil.php).
Expected behaviour
No error.