0

@OneToManyDoctrine2でリレーションのサイズに制約を設定する方法があるかどうか疑問に思いました。

私が2つのクラスを持っているとしましょう:UserToy

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

各ユーザーに最大3つのおもちゃを持たせたいと思います。Doctrine2アノテーションを使用してこれを実現する方法があるかどうか知っていますか?

注釈では不可能な場合、これをどのように行いますか?

ありがとう!

4

1 に答える 1

6
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;
 }
 [..]
}
于 2012-04-04T09:48:20.263 に答える