/**
  * Die Daten werden geladen und die einzelnen Checkboxen
  * zugeordnet.
  */
 protected function load()
 {
     // Daten laden
     $this->lookupentity->searchDataset($this->filter, false, 0, 100);
     $field = $this->textfield;
     while ($row = Database::getInstance()->fetch()) {
         $this->lookupentity->loadFromRow($row);
         $this->addBox($row[$this->valuefield], $this->lookupentity->{$field}, $this->id . '[]', false);
     }
     $this->loaded = true;
 }
 /**
  * @param Request|array $filter
  * @param int $maxResults
  * @param int $skip
  * @return BaseEntity[]
  */
 public function filter($filter, $maxResults = -1, $skip = 0)
 {
     $result = [];
     $db = Database::getInstance();
     // Ggf. gibt es noch ein offenes Statement. Das wird jetzt gesichert und später wieder
     // hergestellt. Das ist etwas inkonsequent, weil dieser Schutz bei anderen Operationen
     // nicht besteht. Hier knallt es aber am Häufigsten, z.B. beim Eager-Loading von Navigational
     // Properties beim Iterieren durch ein anderes Ergebnis
     $oldStatement = $db->getStatement();
     $db->setStatement();
     $this->emptyClass->searchDataset($filter, false, $skip, $maxResults);
     // Jetzt nehmen wir dieses Statement aus der DB-Klasse heraus, damit das nicht aus Versehen
     // geschlossen wird.
     $statement = $db->getStatement();
     $db->setStatement();
     while ($row = $db->fetch($statement)) {
         /** @var BaseEntity $obj */
         $obj = $this->getNewInstanceOfEntity();
         $obj->loadFromRow($row);
         $result[] = $obj;
     }
     try {
         $statement->closeCursor();
     } catch (\Exception $e) {
         Logging::error($e->getMessage());
         unset($statement);
     }
     $db->setStatement($oldStatement);
     unset($statement);
     return $result;
 }