2013-01-07 114 views
0

將實體添加到父實體的Doctrine ArrayCollection時,我收到下面的錯誤。將實體添加到原則時添加外鍵引用ArrayCollection

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

這裏的父entiry

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」},當我添加所有孩子時,我堅持所有孩子,我的問題是,在添加孩子之前是否需要堅持父母?或者我錯過了什麼?

謝謝你的時間。

安德魯

回答

0

嘗試刪除線@ORM \列(名稱= 「job_fk」,類型= 「整數」)在JobRequirement,並再次檢查出來。讓我知道它是否有效。