2013-07-23 71 views
0

我有一個問題,堅持與學說的關係。學說ORM不堅持關係

這是我做的過程:

  1. 創建物料對象&填寫數據
  2. 創建PossibleMaterialConfiguration對象&填充數據
  3. 分配PossibleMaterialConfiguration對象,以實物與

    $ material-> addPossibleMaterialConfiguration($ possibleMaterialConfiguration);

結果: PossibleMaterialConfiguration.material_id爲空!

但是,當我這樣做,並將材質對象分配給PossibleMaterialConfiguration它可以工作!

我開瘋了!這到底是怎麼回事?提前致謝。

我的兩個實體:

Material.php

/** 
* Material 
* 
* @ORM\Table() 
* @ORM\Entity 
*/ 
class Material 
{ 
    /** 
    * @var integer 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $id; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="name", type="string", length=255) 
    */ 
    private $name; 

    /** 
    * @ORM\OneToMany(targetEntity="PossibleMaterialConfiguration", mappedBy="material", cascade={"persist"}) 
    */ 
    private $possibleMaterialConfigurations; 

PossibleMaterialConfiguration.php

/** 
* PossibleMaterialConfiguration 
* 
* @ORM\Table() 
* @ORM\Entity 
*/ 
class PossibleMaterialConfiguration 
{ 
    /** 
    * @var integer 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $id; 

    /** 
    * @ORM\ManyToOne(targetEntity="Material", inversedBy="possibleMaterialConfigurations") 
    * @ORM\JoinColumn(name="material_id", referencedColumnName="id") 
    */ 
    private $material; 

    /** 
    * @var float 
    * 
    * @ORM\Column(name="thickness", type="decimal") 
    */ 
    private $thickness; 

    /** 
    * @var float 
    * 
    * @ORM\Column(name="lengthMin", type="decimal") 
    */ 
    private $lengthMin; 

    /** 
    * @var float 
    * 
    * @ORM\Column(name="lengthMax", type="decimal") 
    */ 
    private $lengthMax; 

    /** 
    * @var float 
    * 
    * @ORM\Column(name="widthMin", type="decimal") 
    */ 
    private $widthMin; 

    /** 
    * @var float 
    * 
    * @ORM\Column(name="widthMax", type="decimal") 
    */ 
    private $widthMax; 

回答

1

看看文章有關學說由於側:

http://docs.doctrine-project.org/en/latest/reference/unitofwork-associations.html

基本上,學說不會檢查「mappedBy」註釋的哪一面。

如果你想做的事:

$material->addPossibleMaterialConfiguration($possibleMaterialConfiguration);

然後你addPossibleMaterialConfiguration功能應該是:

function addPossibleMaterialConfiguration($assoc) { 
    $this->possibleMaterialConfigurations[] = $assoc; 
    $assoc->setMaterial($this); 
}