我有3个表users,groups,group_users (保存组和用户之间的关系)
group_users表包括以下列
-- (is_active 0: not active, 1: active)
| id | user_id | group_id | is_active |
| 1 | 1 | 1 | 1 |
| 2 | 1 | 2 | 0 |在Group的entity中,我有一个关系列,如下所示,它使用group_users表中的关系获取组用户
/*
* @ORM\Entity()
* @ORM\Table(name="groups")
*/
class Group{
...
/**
* @var Collection|GroupUser[]
* @ORM\OneToMany(targetEntity="App\Group\Domain\Entity\GroupUser")
*/
private $group_users;在Group的entity中,我想获取组用户,但只获取活动的用户。在正常情况下,上面的关系获取所有相关实体。
如果我需要举一个例子,根据上面group_users表中的记录,当我调用像$this->group_users这样的变量时,我希望看到只列出了第一条记录
| id | user_id | group_id | is_active |
| 1 | 1 | 1 | 1 |不是这个
| id | user_id | group_id | is_active |
| 2 | 1 | 2 | 0 |你知道解决这个问题的最好方法是什么吗,谢谢。
注意:我不想物理删除任何记录。
发布于 2020-08-21 13:35:56
您可以在Group实体中定义一个新的getter,它将根据您的条件过滤出相关的组用户
use Doctrine\Common\Collections\Criteria;
class Group{
//...
protected getActiveGroupUsers() {
$criteria = \Doctrine\Common\Collections\Criteria::create()
->where(\Doctrine\Common\Collections\Criteria::expr()->eq("is_active", 1));
return $this->group_users->matching($criteria);
}
}当你查询一个群时,你可以得到相关的活跃群用户为
$group = $em->getRepository("...\Group")->find($id);
$group->getActiveGroupUsers();https://stackoverflow.com/questions/63341304
复制相似问题