親エンティティの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"}があり、すべての子を追加したときにすべてを永続化します。私の質問は、子を追加する前に親を永続化する必要がありますか?または私は何かが欠けていますか?
お時間をいただきありがとうございます。
アンドリュー