0

教義との関係を維持するのに問題があります。

これは私がやっているプロセスです:

  1. Material オブジェクトを作成してデータを入力する
  2. PossibleMaterialConfiguration オブジェクトを作成し、データを入力します
  3. を使用して、PossibleMaterialConfiguration オブジェクトをマテリアル オブジェクトに割り当てます。

    $material->addPossibleMaterialConfiguration($possibleMaterialConfiguration);

結果:PossibleMaterialConfiguration.material_id が空です!

しかし、逆の方法でマテリアルオブジェクトをPossibleMaterialConfigurationに割り当てると、うまくいきます!

私は狂ったように運転しています!ここで一体何が起こっているのですか?前もって感謝します。

私の2つのエンティティ:

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;

可能性のあるMaterialConfiguration.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

doctrine の側を負っているという記事を見てみましょう:

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