2012-04-04 2 views
0

Ich frage mich, ob es eine Möglichkeit gibt, eine Beschränkung auf die Größe einer Beziehung in Doctrine2 zu setzen.Doctrine2 - Wie kann @ OneToMany Mapping-Größe begrenzt werden?

Sagen wir, ich habe 2 Klassen: User und Toy:

class User{ 
    ... 
    /** 
    * @OneToMany(targetEntity="Toy", mappedBy="user") 
    */ 
    public $toys; 
    ... 
} 
class Toy{ 
    ... 
    /** 
    * @ManyToOne(targetEntity="User", inversedBy="toys") 
    */ 
    public $user; 
    ... 
} 

ich jeden Benutzer höchstens 3 Spielzeug zu haben, zwingen möchte. Wissen Sie, ob es eine Möglichkeit gibt, dies zu erreichen, indem Sie eine Doctrine2-Annotation verwenden?

Wenn es nicht durch Anmerkungen möglich ist, wie würden Sie das tun?

Dank!

Antwort

5
class User { 
[..] 
public function addToy (Toy $toy) 
{ 
    if(count($this->toys) >= 3 && !$this->toys->contains($toy)) { 
    throw new User\ToyLimitExceededException(
     'At most 3 toys are allowed per user, tried to add another!' 
    ); 
    } 
    $this->toys->add($toy); 
    $toy->setUser($this); 
    return $this; 
} 
[..] 
} 
+0

Ich mag diesen Weg und ich denke, es ist tatsächlich die effektivste. Danke für Ihre Hilfe! :) – Andrea