我正在使用现有的数据库,其中的字段与超级相关。我已经能够使其他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
。
答案 0 :(得分:0)
我遇到的最大问题是由于当我运行数据时,学说无法向表中添加外键:
php app/console doctrine:schema:update --force
我做了一个备份,截断了有问题的表,重新启动了doctrine:schema:update
命令,恢复了数据,一切都工作得非常好。
我还有一种误解,即当我将{{ dump(entity) }}
放入我的代码中时,我将能够看到一系列相关项。我误解了。在我修复数据库之后,当我真正去工作运行for循环并打印出数据时,它工作正常。