From 73b11ba36cb6d505f9c872ddbf8e99dc959655c5 Mon Sep 17 00:00:00 2001 From: Lucas Simeon Date: Thu, 22 Feb 2024 14:43:06 +0100 Subject: [PATCH] keep manual defined reorder after fetching record links see https://github.com/sleiman/airtable-php/issues/44 --- src/Response.php | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/Response.php b/src/Response.php index 5a30f99..6b8daa9 100644 --- a/src/Response.php +++ b/src/Response.php @@ -161,6 +161,21 @@ private function loadRelatedField( $related_field, $related_table, $record ) } while( $relation_request = $relation_response->next() ); + // Keep order + if (count($relation_ids) > 1) { + $related_records_sorted = array(); + + foreach ($relation_ids as $relation_id) { + $key = array_search($relation_id, array_column($related_records, 'id')); + + if ($key !== false) { + $related_records_sorted[] = $related_records[$key]; + } + } + + $related_records = $related_records_sorted; + } + if( is_array( $record->fields->$related_field ) ) { $record->fields->$related_field = $related_records;