Результаты группировки массивов из SOQL

У меня проблемы с группировкой массива, возвращенного из запроса SOQL.

Содержимое массива выглядит следующим образом (это урезанная версия, чтобы дать представление о структуре):

QueryResult Object
(
[queryLocator] =>
[done] => 1
[records] => Array
(
[0] => stdClass Object
(
[Id] =>
[Contact] => 003b000000Ii7HcAAJ
[Session] => stdClass Object
(
[Id] =>
[Name] => Future Leaders (Day1)
)

)

[1] => stdClass Object
(
[Id] =>
[Contact] => 003b000000Ii6jtAAB
[Session] => stdClass Object
(
[Id] =>
[Name] => Future Leaders Program (Day1)
)

)

[2] => stdClass Object
(
[Id] =>
[Contact] => 003b000000Ii7MIAAZ
[Session] => stdClass Object
(
[Id] =>
[Name] => Future Leaders Program (Day2)
)

)

[3] => stdClass Object
(
[Id] =>
[Contact] => 003b000000KL4G4AAL
[Session] => stdClass Object
(
[Id] =>
[Name] => Utilities Chat
)

)

[4] => stdClass Object
(
[Id] =>
[Contact] => 003b000000Ii62fAAB
[Session] => stdClass Object
(
[Id] =>
[Name] => Working Group Update
)

)

)

Проблема в том, что запрос возвращает дубликаты контактов и дубликаты сеансов, поэтому я хочу отсортировать их в новый массив с различными контактами и всеми сеансами, связанными с контактом. Это запрос SOQL, поэтому я не могу выбрать SELECT DISTINCT, а GROUP BY не дает правильных результатов.

Любая помощь будет очень признательна, так как мои навыки PHP очень ржавые!

0

Решение

Одна проблема в том, что у вас есть массив объектов. Вы смешиваете массивы и объекты. Для ваших нужд я бы пошагово прошел через массив записей и создал новый массив с контактом в качестве ключа и сессиями в виде массива объектов для каждого ключа.

$contacts = array();
foreach($records as $record)
{
if(!exists($contacts[$record->Contact]))
$contacts[$record->Contact] = array();
$contacts[$record->Contact][] = $record->Session;
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]