Symfony2 onetoone关系

时间:2012-03-13 09:27:46

标签: orm doctrine symfony one-to-one

我正在使用symfony2开发一个应用程序,并使用orm.yml文件将实体映射到数据库中。当尝试为两个共享onetoone关系的实体(Markagarria.php和GalderaPaketea.php)创建关系时会出现问题。运行php app/console doctrine:schema:update --force时,它会显示下一条消息:无需更新 - 您的数据库已与当前实体元数据同步。

这是实体的代码:

<?php

namespace Anotatzailea\AnotatzaileaBundle\Entity;

use Symfony\Component\Validator\Mapping\ClassMetadata;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;

/**
 * Anotatzailea\AnotatzaileaBundle\Entity\Markagarria
 *
 * @ORM\Table(name="Markagarria")
 * @ORM\Entity
 * @ORM\HasLifecycleCallbacks
 */
class Markagarria
{
    /**
     * @var integer $MarkId
     *
     * @ORM\Column(name="MarkId", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $MarkId;

    /**
     * @ORM\ManyToOne(targetEntity="Dokumentua", inversedBy="Markagarriak")
     * @ORM\JoinColumn(name="DokId", referencedColumnName="DokId")
     */
    protected $Dokumentua;

    /**
     * @ORM\oneToOne(targetEntity="GalderaPaketea", mappedBy="Markagarria")
     */
    private $GalderaPaketea;

    /**
     * Get MarkId
     *
     * @return integer 
     */
    public function getMarkId()
    {
        return $this->MarkId;
    }

    /**
     * Set GalderaPaketea
     *
     * @param Anotatzailea\AnotatzaileaBundle\Entity\GalderaPaketea $galderaPaketea
     */
    public function setGalderaPaketea(\Anotatzailea\AnotatzaileaBundle\Entity\GalderaPaketea $galderaPaketea)
    {
        $this->GalderaPaketea = $galderaPaketea;
    }

    /**
     * Get GalderaPaketea
     *
     * @return Anotatzailea\AnotatzaileaBundle\Entity\GalderaPaketea 
     */
    public function getGalderaPaketea()
    {
        return $this->GalderaPaketea;
    }

    /**
     * Set Dokumentua
     *
     * @param Anotatzailea\AnotatzaileaBundle\Entity\Dokumentua $dokumentua
     */
    public function setDokumentua(\Anotatzailea\AnotatzaileaBundle\Entity\Dokumentua $dokumentua)
    {
        $this->Dokumentua = $dokumentua;
    }

    /**
     * Get Dokumentua
     *
     * @return Anotatzailea\AnotatzaileaBundle\Entity\Dokumentua 
     */
    public function getDokumentua()
    {
        return $this->Dokumentua;
    }
}

<?php

namespace Anotatzailea\AnotatzaileaBundle\Entity;

use Symfony\Component\Validator\Mapping\ClassMetadata;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;

/**
 * Anotatzailea\AnotatzaileaBundle\Entity\GalderaPaketea
 *
 * @ORM\Table(name="GalderaPaketea")
 * @ORM\Entity
 */
class GalderaPaketea
{
    /**
     * @var integer $GalPakId
     *
     * @ORM\Column(name="GalPakId", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $GalPakId;

    /**
     * @var integer $BalidatzeEginak
     *
     * @ORM\Column(name="BalidatzeEginak", type="integer")
     */
    private $BalidatzeEginak;

    /**
     * @var integer $InterpretatzeEginak
     *
     * @ORM\Column(name="InterpretatzeEginak", type="integer")
     */
    private $InterpretatzeEginak;

    /**
     * @var boolean $PaketeEgoera
     *
     * @ORM\Column(name="PaketeEgoera", type="boolean")
     */
    private $PaketeEgoera;

    /**
     * @ORM\oneToOne(targetEntity="Markagarria", mappedBy="GalderaPaketea")
     * @ORM\JoinColumn(name="MarkId", referencedColumnName="MarkId")
     */
    private $Markagarria;

    /**
     * Get GalPakId
     *
     * @return integer 
     */
    public function getGalPakId()
    {
        return $this->GalPakId;
    }

    /**
     * Set BalidatzeEginak
     *
     * @param integer $balidatzeEginak
     */
    public function setBalidatzeEginak($balidatzeEginak)
    {
        $this->BalidatzeEginak = $balidatzeEginak;
    }

    /**
     * Get BalidatzeEginak
     *
     * @return integer 
     */
    public function getBalidatzeEginak()
    {
        return $this->BalidatzeEginak;
    }

    /**
     * Set InterpretatzeEginak
     *
     * @param integer $interpretatzeEginak
     */
    public function setInterpretatzeEginak($interpretatzeEginak)
    {
        $this->InterpretatzeEginak = $interpretatzeEginak;
    }

    /**
     * Get InterpretatzeEginak
     *
     * @return integer 
     */
    public function getInterpretatzeEginak()
    {
        return $this->InterpretatzeEginak;
    }

    /**
     * Set PaketeEgoera
     *
     * @param boolean $paketeEgoera
     */
    public function setPaketeEgoera($paketeEgoera)
    {
        $this->PaketeEgoera = $paketeEgoera;
    }

    /**
     * Get PaketeEgoera
     *
     * @return boolean 
     */
    public function getPaketeEgoera()
    {
        return $this->PaketeEgoera;
    }

    /**
     * Set Markagarria
     *
     * @param Anotatzailea\AnotatzaileaBundle\Entity\Markagarria $markagarria
     */
    public function setMarkagarria(\Anotatzailea\AnotatzaileaBundle\Entity\Markagarria $markagarria)
    {
        $this->Markagarria = $markagarria;
    }

    /**
     * Get Markagarria
     *
     * @return Anotatzailea\AnotatzaileaBundle\Entity\Markagarria 
     */
    public function getMarkagarria()
    {
        return $this->Markagarria;
    }
}

orm.yml文件包含以下内容:

Anotatzailea\AnotatzaileaBundle\Entity\Markagarria:
  type: entity
  table: Markagarria
  fields:
    MarkId:
      type: integer
      id: true
      precision: 0
      scale: 0
      unique: false
      nullable: false
      generator:
        strategy: IDENTITY
  manyToOne:
    Dokumentua:
      targetEntity: Anotatzailea\AnotatzaileaBundle\Entity\Dokumentua
      cascade: {  }
      mappedBy: null
      inversedBy: Markagarriak
      joinColumns:
        DokId:
          referencedColumnName: DokId
      orphanRemoval: false 
  oneToOne:
    GalderaPaketea:
      targetEntity: Anotatzailea\AnotatzaileaBundle\Entity\GalderaPaketea
      cascade: {  }
      mappedBy: Markagarria
  lifecycleCallbacks: {  }

Anotatzailea\AnotatzaileaBundle\Entity\GalderaPaketea:
  type: entity
  table: GalderaPaketea
  fields:
    GalPakId:
      type: integer
      id: true
      precision: 0
      scale: 0
      unique: false
      nullable: false
      generator:
        strategy: IDENTITY
    BalidatzeEginak:
      type: integer
      precision: 0
      scale: 0
      unique: false
      nullable: false
    InterpretatzeEginak:
      type: integer
      precision: 0
      scale: 0
      unique: false
      nullable: false
    PaketeEgoera:
      type: boolean
      precision: 0
      scale: 0
      unique: false
      nullable: false
  oneToOne:
    Markagarria:
      targetEntity: Anotatzailea\AnotatzaileaBundle\Entity\Markagarria
      cascade: {  }
      mappedBy: GalderaPaketea
      joinColumn:
        name: MarkId
        referencedColumnName: MarkId
  lifecycleCallbacks: {  }

0 个答案:

没有答案