Symfony多对多关系持久集合

Symfony多对多关系持久集合,symfony,Symfony,多对多关系: 我用多对多关系连接了两个表 账户组实体: /** * @var ArrayCollection * @ORM\ManyToMany(targetEntity="Account", inversedBy="accountGroups", cascade={"persist"}) * @ORM\JoinTable( * joinColumns={@ORM\JoinColumn()}, * inverseJoinColumns={@ORM\JoinColum

多对多关系:

我用多对多关系连接了两个表

账户组实体:

/**
 * @var ArrayCollection
 * @ORM\ManyToMany(targetEntity="Account", inversedBy="accountGroups", cascade={"persist"})
 * @ORM\JoinTable(
 *      joinColumns={@ORM\JoinColumn()},
 *      inverseJoinColumns={@ORM\JoinColumn(name="id", referencedColumnName="id")})
 **/
protected $accounts;
账户主体:

/**
 * @var ArrayCollection
 * @ORM\ManyToMany(targetEntity="AccountGroup", mappedBy="accounts", cascade={"persist"})
 * 
 */
protected $accountGroups;
我尝试使用find()和findAll()处理accountgroup实体的多对多关系。我没有得到任何数据与帐户,即使它有。 我正在使用默认转储获取持久类集合。 是否可能是关系问题

用于获取的代码:


$entityManager->getRepository('AccountGroup')->查找(1)

您使用了错误的代码。与

$entityManager->getRepository('AccountGroup')->find(1);
您将在数据库中找到ID为1的行。您需要这样做:

$entityManager->getRepository('AccountGroup')->findBy(['group' => $group]);

使用包含所需组的
$group
变量。

感谢@Cerad和@Stiven Llupa的评论。 我正在获取关系数据。必须进行迭代以获得单个数据

$accountEntity = $entityManager->getRepository('Account')->find(1);
foreach($accountEntity->getAccountGroups() as $accountGroups) {
{
    echo $accountGroups->getId();
}

检查数据库并验证联接表是否具有预期值。此外,检查是否正在更新关系的两侧,因为它们是双向的。这简直太傻了。问题是找不到AccountGroup。问题是账户组实体没有相关账户。可能是因为他在创建实体时没有交叉引用实体。是的,这不是自动的。也许一个简单的
$em->refresh($accountGroup)
就能得到所有的关系?不。请不要误会,但也许你应该回去仔细阅读问题,然后再回答。我现在已经读了一遍,我还没有完全理解它。让我们试试这个:如果您执行
$entityManager->getRepository('AccountGroup')->查找(1)
您期望什么?你得到了什么?还有,你为什么要绘制很多地图?你不应该使用多(帐户)对一(组)吗?