Orm Symfony2-onetoone关系

Orm Symfony2-onetoone关系,orm,doctrine,symfony,one-to-one,Orm,Doctrine,Symfony,One To One,我正在使用symfony2开发一个应用程序,并使用orm.yml文件将实体映射到数据库中。当试图为共享onetoone关系的两个实体(markagaria.php和galderpaketea.php)创建关系时,就会出现问题。运行php应用程序/控制台原则:schema:update--force时,会显示下一条消息:无需更新-您的数据库已与当前实体元数据同步 这是实体的代码: <?php namespace Anotatzailea\AnotatzaileaBundle\Entity;

我正在使用symfony2开发一个应用程序,并使用orm.yml文件将实体映射到数据库中。当试图为共享onetoone关系的两个实体(markagaria.php和galderpaketea.php)创建关系时,就会出现问题。运行
php应用程序/控制台原则: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;
    }
}

看起来您在实体GalderaPaketea中的条目应该是:

 /**
 * @ORM\oneToOne(targetEntity="Markagarria", inversedBy="GalderaPaketea")
 * @ORM\JoinColumn(name="MarkId", referencedColumnName="MarkId")
 */
两个实体均未声明所有权,因此未执行数据库更新

退房


我本人是Symfony的新手,我发现这个文档非常有用

您在实体GalderaPaketea中的条目应该是:

 /**
 * @ORM\oneToOne(targetEntity="Markagarria", inversedBy="GalderaPaketea")
 * @ORM\JoinColumn(name="MarkId", referencedColumnName="MarkId")
 */
两个实体均未声明所有权,因此未执行数据库更新

退房


我本人是Symfony的新手,我发现这个文档非常有用

您是否尝试在代码中使用关系?($obj->getGalderaPaketea()。可能数据库实际上已经更新了。我使用的是phpmyadmin,设计器部分没有显示上述实体的实际关系。您是否尝试在代码中使用该关系?($obj->getGalderaPaketea()。可能数据库实际上已经更新了,我使用的是phpmyadmin,设计器部分没有显示上述实体的实际关系