我想知道是否有任何方法可以在Doctrine2中设置@OneToMany
关系大小的约束。
假设我有两个课程:User
和Toy
:
class User{
...
/**
* @OneToMany(targetEntity="Toy", mappedBy="user")
*/
public $toys;
...
}
class Toy{
...
/**
* @ManyToOne(targetEntity="User", inversedBy="toys")
*/
public $user;
...
}
我想强迫每个用户最多拥有3个玩具。你知道是否有办法通过使用任何Doctrine2注释来实现这个目的吗?
如果通过注释无法实现,你会怎么做?
谢谢!
答案 0 :(得分: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;
}
[..]
}