0

親エンティティのDoctrineArrayCollectionにエンティティを追加すると、以下のエラーが発生します。

Integrity constraint violation: 1048 Column 'job_fk' cannot be null

これが親のエントリです

use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Persistence\PersistentObject;

class Job extends \Doctrine\Common\Persistence\PersistentObject
{

    /**
     * @var integer $pk
     * @ORM\Column(name="pk", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
     protected $pk;

    /**
     * @ORM\OneToMany(targetEntity="Ajfit\Entity\JobRequirement", mappedBy="jobFk", fetch="LAZY", cascade={"persist"})
     */
    protected $requirements;

    public function __construct(){
         $this->requirements = new ArrayCollection();
    }
}

これが子エンティティです

use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Persistence\PersistentObject;

class JobRequirement extends \Doctrine\Common\Persistence\PersistentObject
{

    /**
     * @var integer $pk
     * @ORM\Column(name="pk", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
     protected $pk;

    /**
     * @ORM\Column(name="job_fk", type="integer")
     * @ORM\ManyToOne(targetEntity="Ajfit\Entity\Job", inversedBy="requirements" )
     * @ORM\JoinColumn(name="job_fk", referencedColumnName="pk")
     */
     protected $jobFk;

}

これが呼び出しコードです

$job = new Ajfit\Entity\Job();

foreach ($addedRequirements as $requirementText)
{
    $requirement = new \Ajfit\Entity\JobRequirement();
    $job->getRequirements()->add($requirement);
}

子エンティティは正常に追加されますが、jobFkはまったく設定されていません。結合にcascade={"persist"}があり、すべての子を追加したときにすべてを永続化します。私の質問は、子を追加する前に親を永続化する必要がありますか?または私は何かが欠けていますか?

お時間をいただきありがとうございます。

アンドリュー

4

1 に答える 1

0

JobRequirementの@ORM\Column(name = "job_fk"、type = "integer")の行を削除して、もう一度確認してください。うまくいったかどうか教えてください。

于 2013-01-08T11:37:38.983 に答える