/** * Returns an array of uid of the children of $nodeUid. * * @param string $nodeUid The node uid to look for children. * * @return string[] */ public function getNativelyNodeChildren($nodeUid) { $query = $this->createQueryBuilder('s')->select('s._uid', 's._leftnode')->where('s._parent = :node')->addOrderBy('s._leftnode', 'asc')->addOrderBy('s._modified', 'desc')->getQuery()->getSQL(); $result = $this->getEntityManager()->getConnection()->executeQuery((string) $query, [$nodeUid], [\Doctrine\DBAL\Types\Type::STRING])->fetchAll(); return Collection::array_column($result, 'uid0'); }
public function testArray_column() { $mock = ['unused', ['id' => 2135, 'first_name' => 'John', 'last_name' => 'Doe'], ['id' => 3245, 'first_name' => 'Sally', 'last_name' => 'Smith'], ['id' => 5342, 'first_name' => 'Jane', 'last_name' => 'Jones'], ['id' => 5623, 'first_name' => 'Peter', 'last_name' => 'Doe']]; $this->assertEquals([['id' => 2135, 'first_name' => 'John', 'last_name' => 'Doe'], ['id' => 3245, 'first_name' => 'Sally', 'last_name' => 'Smith'], ['id' => 5342, 'first_name' => 'Jane', 'last_name' => 'Jones'], ['id' => 5623, 'first_name' => 'Peter', 'last_name' => 'Doe']], Collection::array_column($mock)); $this->assertEquals(['John', 'Sally', 'Jane', 'Peter'], Collection::array_column($mock, 'first_name')); $this->assertEquals([2135 => 'John', 3245 => 'Sally', 5342 => 'Jane', 5623 => 'Peter'], Collection::array_column($mock, 'first_name', 'id')); $this->assertEquals([2135 => ['id' => 2135, 'first_name' => 'John', 'last_name' => 'Doe'], 3245 => ['id' => 3245, 'first_name' => 'Sally', 'last_name' => 'Smith'], 5342 => ['id' => 5342, 'first_name' => 'Jane', 'last_name' => 'Jones'], 5623 => ['id' => 5623, 'first_name' => 'Peter', 'last_name' => 'Doe']], Collection::array_column($mock, null, 'id')); }
/** * Returns an array of uid of the children of $nodeUid * * @param string $nodeUid The node uid to look for children * @param string $classname * @param int $start * @param int $limit * * @return array */ private function getNodeChildren($nodeUid, $classname, $start = 0, $limit = 1000) { $query = sprintf('SELECT %s FROM %s WHERE %s = ? ORDER BY %s ASC, %s DESC LIMIT %d, %d', $this->requiredFields['uid'], $this->em->getClassMetadata($classname)->getTableName(), $this->requiredFields['parent_uid'], $this->requiredFields['leftnode'], $this->requiredFields['modified'], $start, $limit); $result = $this->em->getConnection()->executeQuery($query, array($nodeUid), array(Type::STRING))->fetchAll(); return Collection::array_column($result, $this->requiredFields['uid']); }