Я использую Symfony 2.8 с доктриной 2.4
У меня есть объект с сопоставлением ассоциативных ссылок «один ко многим»
entity:
id
name
parent_id
пример:
id: 1
name: A
parent_id: null
id: 2
name: B
parent_id = 1
id: 3
name: C
parent_id = 2
id: 4
name: D
parent_id = 3
Я написал функцию, которая находит идентификатор всех вложенных детей родителя.
public function getAllChildrenIdRecursively($entity)
{
$result = array();
if (count($entity->getChildren()) > 0) {
$result[] = $entity->getId();
foreach ($entity->getChildren() as $child) {
$result = array_merge($result, $this->getAllChildrenIdRecursively($child)) ;
}
}
return $result;
}
если я вызову эту функцию getAllChildrenIdRecursively (2), то получу 3, 4.
эта функция работает, но моя проблема в том, что она генерирует слишком много запросов в БД, которые занимают почти 1,5 секунды . Запрос генерирует более 2500, общий результат = 2600 и общая строка = 5000
Как я могу сократить время запроса?
Любая помощь будет высоко ценится!Спасибо