0

我在坚持与教义的关系时遇到了问题。

这是我正在做的过程:

  1. 创建材质对象并填充数据
  2. 创建 PossibleMaterialConfiguration 对象并填充数据
  3. 将 PossibleMaterialConfiguration 对象分配给 Material 对象

    $material->addPossibleMaterialConfiguration($possibleMaterialConfiguration);

结果:PossibleMaterialConfiguration.material_id 为空!

但是,当我反过来将 Material Object 分配给 PossibleMaterialConfiguration 时,它确实有效!

我快疯了!这到底是怎么回事?提前致谢。

我的两个实体:

材料.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;

可能的材料配置.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;
4

1 回答 1

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);
}
于 2013-07-23T15:46:01.057 回答