/** * 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; }