3

CommerceとAreaの2つのテーブル間にOneToMany関係がある既存のデータベースにDoctrineを適用しようとしています。データベースから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エンティティには空の属性があります。何か案は?ありがとうございました!

4

1 に答える 1

0

私は問題を解決しました。それはどこか別の場所でした。私には2つのエンティティマネージャーがあり、必要なものはデフォルトではありませんでした。

于 2012-07-04T13:33:14.693 に答える