ManyToOne / OneToMany具有自定义连接列

时间:2016-02-12 17:40:34

标签: symfony doctrine one-to-many many-to-one

我正在使用现有的数据库,其中的字段与超级相关。我已经能够使其他ManyToOne和反之亦然的工作(我在项目工作时创建数据库的那些),但是这个预先存在的数据库让我陷入了循环。

我有一个名为franchisee_creds的桌子,ManyToOne,其字段为franchisee_id,需要映射到名为accounts的另一个表OneToMany,其中包含一个名为franchisee_number的字段,一个字符串。

FranchiseeCreds.php

 /**
 * @ORM\ManyToOne(
 *     targetEntity="Inertia\InertiaBundle\Entity\Accounts",
 *     inversedBy="franchiseeCreds",
 *     fetch="EAGER"
 * )
 * @ORM\JoinColumn(name="franchisee_id", referencedColumnName="franchisee_number")
 */
private $accounts;

public function __construct()
{
    $this->accounts = new ArrayCollection();
}

...

 /**
 * @return ArrayCollection
 */
public function getAccounts()
{
    return $this->accounts;
}

Accounts.php

 /**
 * @ORM\OneToMany(targetEntity="Inertia\InertiaBundle\Entity\FranchiseeCreds", mappedBy="accounts")
 */
private $franchiseeCreds;

public function __construct()
{
    $this->events = new ArrayCollection();
}

...

/**
 * @return mixed
 */
public function getFranchiseeCreds()
{
    return $this->franchiseeCreds;
}

控制器:

  public function showAction($id)
{
    $em = $this->getDoctrine()->getManager('inertia');

    $entity = $em->getRepository('InertiaBundle:Accounts')->find($id);

    if (!$entity) {
        throw $this->createNotFoundException('Unable to find Accounts entity.');
    }

    $deleteForm = $this->createDeleteForm($id);

    return $this->render('InertiaBundle:Accounts:show.html.twig', array(
        'entity'      => $entity,
        'delete_form' => $deleteForm->createView(),
    ));
}

然后在我的观看中,如果我将{{ dump(entities) }}放在帐户和FranchiseeCreds show.html.twig上,则会显示关系,但它始终为null

1 个答案:

答案 0 :(得分:0)

我遇到的最大问题是由于当我运行数据时,学说无法向表中添加外键:

php app/console doctrine:schema:update --force

我做了一个备份,截断了有问题的表,重新启动了doctrine:schema:update命令,恢复了数据,一切都工作得非常好。

我还有一种误解,即当我将{{ dump(entity) }}放入我的代码中时,我将能够看到一系列相关项。我误解了。在我修复数据库之后,当我真正去工作运行for循环并打印出数据时,它工作正常。