[英]symfony2 doctrine manytoone relationship
我認為這是必須為我的問題提供一個簡單的解決方案,但我無法解決該問題,而且我不確定為什么。
場景:我有2個實體:Bike和Review,關系是OneToMany:
/**
* Bike
*
* @ORM\Entity(repositoryClass="BikeRepository")
* @ORM\HasLifecycleCallbacks
* @ORM\Table(name="bike")
*/
class Bike
{
...
/**
* @var string
*
* @ORM\OneToMany(targetEntity="Review", mappedBy="bike", cascade={"persist"}, fetch="EXTRA_LAZY")
*/
private $reviews;
...
}
/**
* Review
*
* @ORM\Entity(repositoryClass="ReviewRepository")
* @ORM\Table(name="review")
* @ORM\HasLifecycleCallbacks()
*/
class Review
{
...
/**
* @var integer
*
* @ORM\ManyToOne(targetEntity="Bike", inversedBy="reviews", fetch="EXTRA_LAZY")
* @ORM\JoinColumn(name="bike_id", referencedColumnName="id")
*/
private $bike;
....
}
吸氣劑和二傳手是由學說產生的。
在前端,我有一個表單,其中Bike作為隱藏字段,因為有一個帶有Ajax請求的自動填充字段。 因此,在控制器中,如果$ form-> isValid()從隱藏字段中獲取自行車ID,請搜索該自行車的數據庫,並將自行車設置如下:
if ($form->isValid()) {
if ($bikeId) {
$bike = $this->em->getRepository('BikeBundle:Bike')->findOneBy(array('id' => $bikeId));
$review->setBike($bike);
}
$this->em->persist($review);
$this->em->flush();
}
這總是給我bike_id數據庫中的NULL。 知道有什么問題嗎? 我試圖在堅持之前轉儲$ review,我可以得到自行車的詳細信息,所以我不知道出了什么問題。 在實體setBike()方法中,除了getId()返回NULL之外,我可以獲取該Bike對象的任何值。
謝謝你的幫助。
您不需要保留現有實體,因此只需保存您的實體,例如
$ review-> setBike($ bike); $ this-> em-> flush();
嘗試檢查該學說是否真的返回任何實體。.恐怕它是否不返回Bike實體
UPD:還嘗試檢查Bike Entity類的名稱空間。 您的情況似乎不對,因為通常看起來像“ AcmeBikeBundle:Bike”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.