2016-09-07 25 views
0

這是困擾我一段時間,因爲我還沒有完全掌握我解決不了的,儘管我一堆的研究實體之間的關係的小問題....Symfony2的關係錯誤OneToOne單向

我有一個實體「激活Google」中,我有一個OneToOne關係到一個實體「ActiviteImage」明知的活動不一定圖片關聯:

class Activite 
 
{ 
 
    .... 
 
    
 
    /** 
 
    * @ORM\OneToOne(targetEntity="ISC\PlatformBundle\Entity\ActiviteImage", cascade={"persist", "remove"}) 
 
    */ 
 
    private $image; 
 
    
 
    .... 
 
    
 
    /** 
 
    * Set image 
 
    * 
 
    * @param \ISC\PlatformBundle\Entity\ActiviteImage $image 
 
    * @return Activite 
 
    */ 
 
    public function setImage(ActiviteImage $image = null) 
 
    { 
 
     $this->image = $image; 
 
    
 
     return $this; 
 
    } 
 
    
 
    /** 
 
    * Get image 
 
    * 
 
    * @return \ISC\PlatformBundle\Entity\ActiviteImage 
 
    */ 
 
    public function getImage() 
 
    { 
 
     return $this->image; 
 
    } 
 
}

class ActiviteImage 
 
{ 
 
    /** 
 
    * @var integer 
 
    * 
 
    * @ORM\Column(name="id", type="integer") 
 
    * @ORM\Id 
 
    * @ORM\GeneratedValue(strategy="AUTO") 
 
    */ 
 
    private $id; 
 
    
 
    /** 
 
    * @var string 
 
    * 
 
    * @ORM\Column(name="urlImage", type="string", length=255) 
 
    */ 
 
    private $urlImage; 
 
}

我的控制器時,提交表單:

$activite->setTextActivity($contentActu); 
 
$activite->setIdFriend(0); 
 
$activite->setDatetimeActivity(new \DateTime()); 
 
$image = new ActiviteImage(); 
 
$image->setUrlImage('http://127.0.0.1:81/IMC/web/uploads/img/'.$fileName); 
 
$activite->setImage($image); 
 
$em->persist($activite); 
 
$em->flush();

不要依賴於平原地址,這些都只是試驗了。

添加兩個實體數據庫的工作只有當我將手動檢查我的活動表中的操作image_id列是空的,它不是NULL,只是空的(所以沒有連接ActiviteImage表)... ... (如果它可以幫助你,我知道我們不應該直接碰到桌子,但我試圖告訴圖像的id,phpMyAdmin不會返回錯誤,只是「0在線發佈」cf. image - >http://imageshack.com/a/img923/3784/tSiY9d.png

其他信息時,我去觀看由Symfony的執行的應用程序我看自己,這是件好事,可能是有用的:

INSERT INTO activite (idUser, idTypeActivite, idFriend, textActivity, datetimeActivity, image_id) VALUES (?, ?, ?, ?, ?, ?) 
 
    
 
Parameters: { 1: 1, 2: 2, 3: 0, 4: fghgfh, 5: '2016-09-07 16:30:13', 6: 1 }

我回幾次Winzou對Openclassroom想我錯過了一些教程,但如果是這樣的話我看不出有什麼...

所以,如果你有一個小跟蹤此問題仍然存在,並且是比較麻煩給我:呃:

(不容易理解的關係... :()

在此先感謝,

回答

0

,其中從ActiviteImage您的OneToOne關係 - >激活Google?

我會將關係設置爲雙向,例如,你應該在你的關係中映射和反轉。

查看documentation

E.g.

class Activite 
{ 
    // ... 

    /** 
    * @ORM\OneToOne(targetEntity="ActiviteImage", mappedBy="activite", cascade={"persist", "remove"}) 
    */ 
    private $activiteImage; 

    // ... 
} 

/** @Entity */ 
class ActiviteImage 
{ 
    // ... 

    /** 
    * @ORM\OneToOne(targetEntity="Activite", inversedBy="activiteImage") 
    * @ORM\JoinColumn(name="activite_id", referencedColumnName="id") 
    */ 
    private $activite; 

    // ... 
} 

當您正確設置您的關係時,它應該正常工作。