我有一个问题,坚持与学说的关系。
这是我正在做的过程:
使用
将PossibleMaterialConfiguration对象分配给Material Object$材料 - > addPossibleMaterialConfiguration($ possibleMaterialConfiguration);
结果: PossibleMaterialConfiguration.material_id为空!
但是,当我以相反的方式进行操作并将Material Object分配给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;
答案 0 :(得分:1)
看一下关于学说中的欠边的文章:
http://docs.doctrine-project.org/en/latest/reference/unitofwork-associations.html
基本上,doctrine不会检查哪一侧是“mappedBy”注释。
如果你想这样做:
$material->addPossibleMaterialConfiguration($possibleMaterialConfiguration);
然后您的addPossibleMaterialConfiguration
函数应为:
function addPossibleMaterialConfiguration($assoc) {
$this->possibleMaterialConfigurations[] = $assoc;
$assoc->setMaterial($this);
}