symfony2を使ってアプリケーションを開発し、orm.ymlファイルを使ってエンティティをデータベースにマッピングします。この問題は、onetoone関係(Markagarria.phpとGalderaPaketea.php)を共有する2つのエンティティの関係を作成しようとするときに発生します。 php app/console doctrine:schema:update --force
を実行すると、次のメッセージが表示されます。更新するものはありません - データベースは、現在のエンティティメタデータとすでに同期しています。Symfony2 onetooneの関係
これは、エンティティのためのコードです:
<?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: { }
コード内にリレーションを使用してみましたか? ($ obj-> getGalderaPaketea())。データベースが実際に更新された可能性があります。 – Tool
私はphpmyadminを使用していますが、デザイナーのセクションには上記のエンティティの実際の関係は示されていません – Haritz