【发布时间】:2016-07-31 12:51:06
【问题描述】:
为了解决problem I asked about earlier,我正在尝试创建一个自定义存储库函数,该函数将根据device、name 和colors 约束确定Repair 的实例是否唯一.
这是我对Repair 类的教义注释。请注意device 属性是多对一(一台设备的多次维修),而colors 是多对多。
/**
* @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.")
*/
这是我的RepairRepository.php,其中$criteria['colors']是一个数组。
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();
}
我有三个问题可能可以归结为一个:
- 编辑:每次更改,无论是否导致重复,我都会收到存在重复实体的消息。
- 编辑:尽管出现错误消息,但仍会执行名称更改!
- 补充:我可以创建任意数量的副本,永远不会出现错误消息。
【问题讨论】:
-
你看到这篇文章了吗? stackoverflow.com/questions/16148678/…
-
您的自定义查询与默认查询相同。不行是正常的:)我试试看。
标签: php doctrine-orm symfony