Symfony2 + Doctrine 一对多关系

3

我正在尝试将Doctrine应用于现有数据库,该数据库在两个表Commerce和Area之间具有OneToMany关系。我从数据库生成了yml模式,结果如下:

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: {  }

根据该模式,我生成了实体:

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实体具有空属性。有任何想法吗?谢谢!

1个回答

0

我解决了这个问题。它出现在其他地方,我有两个实体管理器,而我需要的不是默认的那一个。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接