我正在使用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: { }