私は Symfony2 2.3 を使用しており、DotrineFixturesBundle を介して 2 つのエンティティ間でデータを共有する必要がありますが、Fixtures 間の共有オブジェクトは機能しません。コマンドを実行すると php app/console doctrine:fixtures:load --purge-with-truncate データが読み込まれます. しかし関係のあるフィールドは NULL です.
表 Divterrigral
ID 説明
1 件の説明
FK Divterribase を含むテーブル
ID DIVTERRIGRAL_ID 説明
1 null descriptionInfo
mysql を実行すると、関係の動作をマッピングできます。
クラス LoadDivterrigral。
<?php
namespace Soint\InventarioBundle\DataFixtures\ORM;
use Doctrine\Common\DataFixtures\AbstractFixture;
use Doctrine\Common\DataFixtures\OrderedFixtureInterface;
use Doctrine\Common\Persistence\ObjectManager;
use Soint\InventarioBundle\Entity\Divterrigral;
class LoadDivterrigral extends AbstractFixture implements OrderedFixtureInterface{
/**
* {@inheritDoc}
*/
public function load(ObjectManager $manager){
$ahuachapan = new Divterrigral();
$ahuachapan->setNombre('Ahuachapan');
$manager->persist($ahuachapan);
$manager->flush();
$this->addReference('dep-ahuachapan', $ahuachapan);
}
/**
* {@inheritDoc}
*/
public function getOrder(){
return 1; // el orden en el cual serán cargados los accesorios
}
}
クラス LoadDivTerribase
<?php
namespace Soint\InventarioBundle\DataFixtures\ORM;
use Doctrine\Common\DataFixtures\AbstractFixture;
use Doctrine\Common\DataFixtures\OrderedFixtureInterface;
use Doctrine\Common\Persistence\ObjectManager;
use Soint\InventarioBundle\Entity\Divterribase;
class LoadDivterribase extends AbstractFixture implements OrderedFixtureInterface {
/**
* {@inheritDoc}
*/
public function load(ObjectManager $manager){
$ahuachapan = new Divterribase();
$ahuachapan->setNombre('Ahuachapan');
$ahuachapan->setDivterrigral($this->getReference('dep-ahuachapan'));
$manager->persist($ahuachapan);
$manager->flush();
}
/**
* {@inheritDoc}
*/
public function getOrder(){
return 2;
}
}
エンティティDivterrigral
<?php
namespace Soint\InventarioBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
use Soint\InventarioBundle\Entity\Divterribase;
/**
* @ORM\Entity
*/
class Divterrigral {
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue;
*/
protected $id;
/** @ORM\Column(type="string", length=100) */
protected $nombre;
/**
* @ORM\OneToMany(targetEntity="Divterribase", mappedBy="divterrigral")
*/
protected $divterribases;
public function __construct() {
$this->divterribases = new ArrayCollection();
}
public function addDivterribases(Articulo $articulos){
$this->divterribases[] = $articulos;
}
public function getDivterribases(){
return $this->divterribases;
}
/**
* Get id
* @return integer
*/
public function getId(){
return $this->id;
}
/**
* Set nombre
* @param string $nombre
* @return Divterrigral
*/
public function setNombre($nombre){
$this->nombre = $nombre;
return $this;
}
/**
* Get nombre
* @return string
*/
public function getNombre(){
return $this->nombre;
}
public function __toString(){
return $this->getNombre();
}
}
エンティティ Divterribase
<?php
namespace Soint\InventarioBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Soint\InventarioBundle\Entity\Divterrigral;
/**
* @ORM\Entity
*/
class Divterribase {
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue;
*/
protected $id;
/** @ORM\Column(type="string", length=100) */
protected $nombre;
/**
* @ORM\ManyToOne(targetEntity="Divterrigral", inversedBy="divterribases")
* @ORM\JoinColumn(name="divterrigral_id", referencedColumnName="id")
* @return integer
*/
protected $divterrigral;
/**
* Get id
* @return integer
*/
public function getId(){
return $this->id;
}
/**
* Set nombre
* @param string $nombre
* @return Divterribase
*/
public function setNombre($nombre){
$this->nombre = $nombre;
return $this;
}
/**
* Get nombre
* @return string
*/
public function getNombre(){
return $this->nombre;
}
/**
* Set divTerriGral
* @param Soint\InventarioBundle\Entity\Divterrigral $divTerriGral
* @return Divterribase
*/
public function setDivterrigral(Divterrigral $divTerriGral = null){
$this->divTerriGral = $divTerriGral;
return $this;
}
/**
* Get divTerriGral
* @return Soint\InventarioBundle\Entity\Divterrigral
*/
public function getDivterrigral(){
return $this->divTerriGral;
}
public function __toString(){
return $this->getNombre();
}
}