2012-07-03 3 views
3

Я пытаюсь применить Doctrine к существующей базе данных, которая имеет отношения OneToMany между двумя таблицами: Commerce и Area. Я сгенерировал YML схему из базы данных, что приводит к следующему:Symfony2 + отношение Doctrine One-to-Many

Area: 
    type: entity 
    table: area 
    fields: 
    id: 
     id: true 
     type: integer 
     unsigned: false 
     nullable: false 
     generator: 
     strategy: IDENTITY 
    name: 
     type: string 
     length: 255 
     fixed: false 
     nullable: true 
    lifecycleCallbacks: { } 

Commerce: 
    type: entity 
    table: commerce 
    fields: 
    id: 
     id: true 
     type: integer 
     unsigned: false 
     nullable: false 
     generator: 
     strategy: IDENTITY 
    name: 
     type: string 
     length: 255 
     fixed: false 
     nullable: true 
    manyToOne: 
    area: 
     targetEntity: Area 
     cascade: { } 
     mappedBy: null 
     inversedBy: null 
     joinColumns: 
     area_id: 
      referencedColumnName: id 
     orphanRemoval: false 
    lifecycleCallbacks: { } 

Из этой схемы я сгенерировал Entities:

use Doctrine\ORM\Mapping as ORM; 

/** 
* Model\EntitiesBundle\Entity\Area 
* 
* @ORM\Table(name="area") 
* @ORM\Entity 
*/ 
class Area 
{ 
    /** 
    * @var integer $id 
    * 
    * @ORM\Column(name="id", type="integer", nullable=false) 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="IDENTITY") 
    */ 
    private $id; 

    /** 
    * @var string $name 
    * 
    * @ORM\Column(name="name", type="string", length=255, nullable=true) 
    */ 
    private $name; 


    /** 
    * @return string 
    */ 
    public function getName() 
    { 
     return $this->name; 
    } 

} 


use Doctrine\ORM\Mapping as ORM; 

/** 
* Model\EntitiesBundle\Entity\Commerce 
* 
* @ORM\Table(name="commerce") 
* @ORM\Entity 
*/ 
class Commerce 
{ 
    /** 
    * @var integer $id 
    * 
    * @ORM\Column(name="id", type="integer", nullable=false) 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="IDENTITY") 
    */ 
    private $id; 

    /** 
    * @var string $name 
    * 
    * @ORM\Column(name="name", type="string", length=255, nullable=true) 
    */ 
    private $name; 

    /** 
    * @var Area 
    * 
    * @ORM\ManyToOne(targetEntity="Area") 
    * @ORM\JoinColumns({ 
    * @ORM\JoinColumn(name="area_id", referencedColumnName="id") 
    * }) 
    */ 
    private $area; 


    /** 
    * @return \Model\EntitiesBundle\Entity\Area 
    */ 
    public function getArea() 
    { 
     return $this->area; 
    } 

    /** 
    * @return string 
    */ 
    public function getName() 
    { 
     return $this->name; 
    } 
} 

Моей проблема возникает, когда я пытаюсь:

$commerce = $em->getRepository('ModelEntitiesBundle:Commerces') 
       ->find($id); 
echo $commerce->getArea()->getName(); 

Объект Area имеет пустые атрибуты. Любые идеи? Спасибо!

ответ

0

Я решил проблему. Это было где-то еще, у меня есть два Менеджера сущностей, и тот, который мне нужен, не был дефолтом.

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