entityManager = $entityManager; } public function process(Entity $entity, LoaderParams $params): void { $hasReminder = $this->entityManager ->getDefs() ->getEntity($entity->getEntityType()) ->hasField('reminders'); if (!$hasReminder) { return; } if ($params->hasSelect() && !$params->hasInSelect('reminders')) { return; } $entity->set('reminders', $this->fetchReminderDataList($entity)); } private function fetchReminderDataList(Entity $entity): array { $list = []; $collection = $this->entityManager ->getRDBRepository('Reminder') ->select(['seconds', 'type']) ->where([ 'entityType' => $entity->getEntityType(), 'entityId' => $entity->getId(), ]) ->distinct() ->order('seconds') ->find(); foreach ($collection as $reminder) { $list[] = (object) [ 'seconds' => $reminder->get('seconds'), 'type' => $reminder->get('type'), ]; } return $list; } }