我有一个用户实体和一个Usecase实体。这2个实体通过ManyToMany关联关联,但该关联还拥有另一个属性,称为“环境”。为了实现这种关系,我还有一个名为UserUsecase的实体,它具有与用户的ManyToOne关系,与Usecase的ManyToOne关系以及额外的“环境”字段。当从数据库中获取用户时,他的用例也被获取,所以用户拥有一个UserChalection类型的对象的ArrayCollection,它表示用户拥有的所有用例。我想要做的是通过usecase_id过滤这个ArrayCollection。该UserUsecase类具有以下结构:Symfony:通过关联的实体ID筛选ArrayCollection
class UserUsecase
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id
/**
* @ORM\ManyToOne(targetEntity="User", inversedBy="userUsecases")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
*/
protected $user;
/**
* @ORM\ManyToOne(targetEntity="Usecase", inversedBy="userUsecases")
* @ORM\JoinColumn(name="usecase_id", referencedColumnName="id")
*/
protected $usecase;
/**
* @ORM\Column(type="integer")
*/
protected $environment;
}
所以,我想这个用户类中:
public function filterUsecases($usecase_id){
$criteria = Criteria::create();
$criteria->where(Criteria::expr()->eq('usecase', $usecase_id));
return $this->userUsecases->matching($criteria);
}
这对我来说很有意义,即使是类UserUsecase领域用例是类型的对象用例,它应该解析为它的id,并且当ids匹配时方程将保持不变。尽管如此,这似乎并没有工作,我无法找到如何实现这个过滤。难道不可能这样做吗?我发现了一篇似乎正是我想要的相关文章,但这不适用于我的情况。 Here是文章!难道我做错了什么?
在此先感谢!