Reputation: 85
I have a problem persisting relations with doctrine.
This is the process I'm doing:
Assign PossibleMaterialConfiguration Object to Material Object with
$material->addPossibleMaterialConfiguration($possibleMaterialConfiguration);
Result: PossibleMaterialConfiguration.material_id is empty!
But when I do it the other way round and assign Material Object to PossibleMaterialConfiguration it does work!
I'm driving crazy! What the hell is going on here? Thanks in advance.
My two entities:
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;
Upvotes: 0
Views: 254
Reputation: 4704
Take a look at the article about owing side in doctrine :
http://docs.doctrine-project.org/en/latest/reference/unitofwork-associations.html
Basically, doctrine won't check the side where is the "mappedBy" annotation.
If you want to do :
$material->addPossibleMaterialConfiguration($possibleMaterialConfiguration);
Then your addPossibleMaterialConfiguration
function should be :
function addPossibleMaterialConfiguration($assoc) {
$this->possibleMaterialConfigurations[] = $assoc;
$assoc->setMaterial($this);
}
Upvotes: 1