2016-02-12 2 views
1

Я работаю с существующей базой данных с полями, которые не очень хорошо связаны. Я смог получить другие отношения ManyToOne и наоборот, которые работают (в тех случаях, когда я создал базу данных во время работы над проектом), но эта уже существующая база данных бросает меня на цикл.ManyToOne/OneToMany с пользовательским столбцом объединения

У меня есть таблица под названием 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, отношения показывает вверх , но я t всегда null.

+0

Что вы делаете на контроллере и что вы передаете в Twig view? – Pipe

+0

Я добавил контроллер. Представление twig - только автогенерация, я просто добавил {{dump (entity)}}, чтобы я мог видеть, какие данные мне даны. – chrislebaron

+0

На основе вашего контроллера '{{dump (entities)}}' ничего не делает ... потому что вы не передаете переменную 'entity' на ваш контроллер. – Pipe

ответ

0

Самая большая проблема у меня была связано с доктриной, не будучи в состоянии добавить внешние ключи к таблицам в то время как данные в них было, когда я побежал:

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

Я сделал резервную копию, усеченный таблицы с проблемами , повторите команду doctrine:schema:update, восстановили данные и все работало просто персиковое.

У меня также было неправильное представление о том, что я смогу увидеть массив связанных элементов, когда я поставлю {{ dump(entity) }} в свой код. Я ошибался. Когда я фактически отправился на работу, чтобы запустить цикл for и распечатать данные, они работали нормально, после того как я исправил базу данных.

+0

Вы с ними справлялись с проблемами? ;) – k0pernikus

Смежные вопросы