/**
  * Fügt mehrere Einträge zum Unique-Index hinzu
  *
  * ist z. B. dafür nötig, um den Index mit der Datenbank zu synchronisieren.
  * @param Array $dataRows jeder Eintrag ist ein Parameter für $this->process()
  * @chainable
  */
 public function updateIndex(UniqueConstraint $constraint, array $dataRows)
 {
     if (!array_key_exists($constraint->getName(), $this->uniqueConstraints)) {
         throw new InvalidArgumentException(sprintf("Constraint '%s' wurde noch nicht mit addConstraint() hinzugefügt'", $constraint->getName()));
     }
     foreach ($dataRows as $data) {
         // hierbei können natürlich auch UniqueConstraintExceptions auftreten, diese wollen wir aber nicht abfangen, weil wir davon ausgehen, dass meistens diese Funktion dafür genutzt wird, den Index aus der Datenbank zu füllen (die ja konsistent in sich, ist)
         $this->process($data);
     }
     return $this;
 }
 protected function createUQDataRows(UniqueConstraint $constraint)
 {
     $data = $constraint->getDataHelper();
     $rows = array();
     // das sind die labels aus dem fixture, für den testGetUniqueIndex test ist das wichtig(!) (für den anderen nicht)
     $rows[] = $data('migration', 1);
     $rows[] = $data('integration', 2);
     $rows[] = $data('php', 3);
     $rows[] = $data('audio', 4);
     $rows[] = $data('favorite', 5);
     $rows[] = $data('locked', 6);
     return new ArrayCollection($rows);
 }
Example #3
0
 public function getUniqueIndex(UniqueConstraint $constraint, $qbFunction = NULL)
 {
     $qb = new QueryBuilder($this->_em);
     // alle Felder des Constraints müssen in den Index
     foreach ($constraint->getKeys() as $key) {
         $qb->addSelect(sprintf('e.%s', $key));
     }
     // der Identifier muss auch mit selected werden
     $identifierField = $this->getIdentifier(TRUE);
     // foreach as $identifierField) {
     $qb->addSelect(sprintf('e.%s AS %s', $identifierField, 'identifier'));
     //}
     // alle Entities aus der Tabelle
     $qb->from($this->_entityName, 'e');
     return $this->deliverQuery($qb, $qbFunction, 'scalar');
     // als array ausgeben für performance (wir wollen ja eh ein Array zurückgeben)
 }