0
我有3个实体,“讲座”,“Cource”和“CourseImage”。与symfony和doctrine的关系问题
在课堂上讲课,我有:
/**
* @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;
}
我们可以看到'Course'实体的'getCourseImages()'和/或'getImages()'函数吗? – 2014-11-25 10:48:36
超出范围,我想建议你看一下[CraueGeoBundle](https://github.com/craue/CraueGeoBundle)是一个**原理函数,用于计算Symfony2项目中的地理距离。 **您可以花两分钟时间查看距离查询的[使用方法](https://github.com/craue/CraueGeoBundle#usage)部分。 – Matteo 2014-11-25 10:55:05
@caCtus,我做了一个编辑。 @ Matteo,谢谢,我会的。 – 2014-11-25 10:56:56