簡體   English   中英

與symfony和學說的關系問題

[英]Relation issue with symfony and doctrine

我有3個實體,“講座”,“課程”和“ CourseImage”。

在課堂上我有:

/**
 * @ORM\ManyToOne(targetEntity="Course", cascade={"persist"})
 * @ORM\JoinColumn(name="courseId", referencedColumnName="courseId")
 */
protected $course;

在課堂上我有:

/**
 * @ORM\OneToMany(targetEntity="CourseImage", mappedBy="course")
 */
protected $images;

所有getter / setter均由symfony正確生成。

我創建了一個自定義存儲庫“ LectureRepository”,以使用本機查詢來檢索一些講座,其中我的代碼是:

public function findPopularByLocation($latitude, $longitude)
    $rsm = new ResultSetMapping();
    $rsm->addEntityResult('Acme\DemoBundle\Entity\Lecture', 'l');
    $rsm->addFieldResult('l', 'lectureId', 'lectureId');
    $rsm->addFieldResult('l', 'latitude', 'latitude');
    $rsm->addFieldResult('l', 'longitude', 'longitude');
    $rsm->addFieldResult('l', 'start', 'start');
    $rsm->addMetaResult('l', 'courseId', 'courseId', true);

    $sql = 'SELECT * , ( 3959 * ACOS( COS( RADIANS( ? ) ) * COS( RADIANS( latitude ) ) * COS( RADIANS( longitude ) - RADIANS( ? ) ) + SIN( RADIANS( ? ) ) * SIN( RADIANS( latitude ) ) ) ) AS distance FROM lectures HAVING distance < 25 ORDER BY distance LIMIT 0 , 20;';
    $query = $this->getEntityManager()->createNativeQuery($sql, $rsm);
    $query->setParameter(1, $latitude);
    $query->setParameter(2, $longitude);
    $query->setParameter(3, $latitude);
    return $query->getResult();
}

終於在我的控制器中,我有:

$popularLectures = $this
    ->getDoctrine()
    ->getManager()
    ->getRepository('AcmeDemoBundle:Lecture')
    ->findPopularByLocation($latitude, $longitude);

可以正確檢索我的演講,並且我還可以從演講中檢索課程:

$popularLectures[0]->getCourse();

但是當我嘗試:

$popularLectures[0]->getCourse()->getImages();

我沒有結果。.我想我應該在本地查詢中添加一些內容,以使其也從數據庫中檢索圖像,但是我不確定如何,我的研究也沒有回報:(任何幫助將不勝感激!

編輯:課程中的getImages如下。

/**
 * Get images
 *
 * @return \Doctrine\Common\Collections\Collection
 */
public function getImages()
{
    return $this->images;
}

找到了問題,我那里沒有inversedBy參數。仍然感謝您的評論。

/**
 * @ORM\ManyToOne(targetEntity="Course", inversedBy="images", cascade={"persist"})
 * @ORM\JoinColumn(name="courseId", referencedColumnName="courseId")
 */
protected $course;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM