Um problem I asked about earlier zu lösen, ich versuche, eine benutzerdefinierte Repository-Funktion zu erstellen, ob eine Instanz von Repair
einzigartig bestimmen ist, auf der Grundlage der device
, name
und colors
Einschränkungen .Lehre: Benutzerdefinierte Repository, um zu bestimmen UniqueEntity nicht
Hier ist mein Doctrine Annotation für Klasse Repair
. Beachten Sie, dass die device
-Eigenschaft "Viele zu Eins" (viele Reparaturen für ein Gerät) lautet und dass colors
"Viele zu viele" lautet.
/**
* @ORM\Table(name="repair")
* @ORM\Entity(repositoryClass="AppBundle\Repository\RepairRepository")
* @UniqueEntity(fields={"name", "device", "colors"}, repositoryMethod="getSimilarRepairs", message="Repair {{ value }} already exists for this name, device and colour combination.")
*/
Das ist mein RepairRepository.php, in denen $criteria['colors']
ein Array ist.
public function getSimilarRepairs(array $criteria) {
$builder = $this->createQueryBuilder('r')
->where('r.device = :device')
->andWhere('r.colors = :colors')
->andWhere('r.name = :name')
->setParameters(['deviceid'=>$criteria['device'],'colors'=>$criteria['colors'],'name'=>$criteria['name']]);
return $builder->getQuery();
}
Ich habe drei Probleme, die wahrscheinlich auf eine gebracht werden kann:
- Redaktion: bei jeder Änderung, so dass eine doppelte oder nicht, bekomme ich die Meldung, dass ein Duplikat Einheit existiert.
- editieren: Trotz der Fehlermeldung werden Namensänderungen trotzdem durchgeführt!
- hinzufügen: Ich kann so viele Duplikate erstellen, wie ich möchte, es gibt nie eine Fehlermeldung.
Siehst du diesen Beitrag? http://stackoverflow.com/questions/16148678/symfony-2-uniqueentity-repositorymethod-fails-on-update-entity – DOZ
Yous benutzerdefinierte Abfrage funktioniert genauso wie die Standardabfrage. Es ist normal, dass es nicht funktioniert :) Ich werde es versuchen. – Alsatian