public function getItems(array $filter = null, Condition $condition = null, $options = null)
{
$query = $this->getQueryClass();
list($fields, $relations, $relationFields) = $this->getFields($options['fields']);
$selects = array_keys($fields);
$this->mapOptions($query, $options);
$this->mapToOneRelationFields($query, $relations, $relationFields);
$this->mapFilter($query, $filter);
if ($this->definition->isNested()) {
$query->filterByLft(1, Criteria::GREATER_THAN);
$selects[] = 'Lft';
$selects[] = 'Rgt';
$selects[] = 'Lvl';
}
$query->select($selects);
$stmt = $this->getStm($query, $condition);
$clazz = $this->getPhpName();
$result = [];
while ($row = $stmt->fetch(\PDO::FETCH_ASSOC)) {
$result[] = $this->populateRow($clazz, $row, $selects, $relations, $relationFields, isset($options['permissionCheck']) ? $options['permissionCheck'] : null);
}
return $result;
}