对象使用DotrineFixturesBundle返回null

时间:2013-07-19 18:23:52

标签: symfony doctrine-orm fixtures

我正在使用Symfony2 2.3,我需要通过DotrineFixturesBundle在两个实体之间共享数据 但是夹具之间的共享对象不起作用。 执行命令时 php app / console doctrine:fixtures:load --purge-with-truncate 数据是加载的,但是关系的字段是NULL

表Divterrigral

ID DESCRIPTION

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();
    }
}

1 个答案:

答案 0 :(得分:0)

实体Divterrigral

/**
 * @ORM\OneToMany(targetEntity="Divterribase", mappedBy="divterrigral",cascade={"persist", "remove"})
 */
protected $divterribases;

进一步阅读:http://doctrine-orm.readthedocs.org/en/2.0.x/reference/working-with-associations.html#transitive-persistence-cascade-operations