2016-09-26 6 views
0

пустой ArrayCollection onetomany Я получил три класса:Пустой объект переменной и Symfony

  • ProjectType
  • Фаза
  • ProjectTypePhase (Это должно создать отдельную таблицу соединения, чтобы убедиться, что ProjectType и фазы компонуется с идентификатор для заказа)

ProjectType

/** 
    * @OneToMany(targetEntity="ProjectTypePhase", mappedBy="project_type") 
    */ 
    private $projectTypePhases; 

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

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

Фаза

/** 
* @OneToMany(targetEntity="ProjectTypePhase", mappedBy="phase") 
*/ 
private $projectTypePhases; 

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

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

ProjectTypePhase

/** 
* @ManyToOne(targetEntity="ProjectType", inversedBy="project_type_phase") 
* @JoinColumn(name="project_type_id", referencedColumnName="id") 
*/ 
private $projectType; 
/** 
* @ManyToOne(targetEntity="Phase", inversedBy="project_type_phase") 
* @JoinColumn(name="phase_id", referencedColumnName="id") 
*/ 
private $phase; 

public function __construct($projectType, $phase) 
{ 
    $this->projectType = $projectType; 
    $this->phase = $phase; 
} 

Я заполнил базу данных с помощью MySQL Workbench, поскольку они являются только записи идентификаторов (правильные?). Во всяком случае, всякий раз, когда я пытаюсь сделать $ projectType-> getProjectTypePhases(); `возвращает пустую коллекцию. Кроме того, когда я пытаюсь это:

$repository = $this->getDoctrine()->getRepository('AppBundle:ProjectTypePhase'); 
$projectPhases = $repository->findAll(); 

Я получаю все записи, но как-то имя переменной для экземпляра projecttype и фазы сущности является нулевым, даже если они заполнены в базе данных. Соответствующие клавиши верны и имена заполнены. Что пошло не так? И есть ли какой-то подход, который нужно сделать, чего мне не хватает? То, что я пытаюсь выполнить, это:

У меня было много отношений между многими, которые отлично работали между ProjectType и Phase. Однако, поскольку для этой таблицы нет идентификатора, ничего не получилось в том порядке, в котором я собирался. Я искал решение, и это была отдельная сущность, которая могла бы обрабатывать отношения между ProjectType и Phase и добавлять дополнительные столбцы. Правильно ли это?

+0

У вас есть опечатка в 'ProjectTypePhase'' inversedBy' или они верны? – DonCallisto

+0

Это должно быть правильно: @ORM \ Table (name = "project_type_phase") – DaViDa

ответ

0

Изменить ProjectTypePhase следующим

/** 
* @ManyToOne(targetEntity="ProjectType", inversedBy="projectTypePhases") 
* @JoinColumn(name="project_type_id", referencedColumnName="id") 
*/ 
private $project_type; 
/** 
* @ManyToOne(targetEntity="Phase", inversedBy="projectTypePhases") 
* @JoinColumn(name="phase_id", referencedColumnName="id") 
*/ 
private $phase; 

Вы должны сделать имена совпадают с тем, чтобы сделать вещи работ. Однако довольно странно, что доктрина не предупреждает вас

+0

Все еще я получаю пустые имена. Я даже могу найти объект ProjectType. Так что это все работает как с вашим примером, так и с моим. Просто атрибут «name» имеет значение null как для ProjectType, так и для Phase, даже если они заполнены в базе данных. – DaViDa

+0

Когда я делаю $ repository-> findAll ($ projectType); теперь, где $ projectType - это объект, который дает мне имена проекта, но имя фазы все еще пусто – DaViDa

+0

@DaViDa, возможно, у вас есть опечатки в другом месте – DonCallisto

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

  • Нет связанных вопросов^_^