Проблема связи с Symfony и доктриной

0

У меня есть 3 объекта: "Лекция", "Корс" и "CourseImage".

В классе Лекция у меня:

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

И в классе Курс у меня:

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

Все геттеры/сеттеры генерируются 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();

Я не получаю никаких результатов. Предположим, я должен добавить что-то в свой собственный запрос, чтобы он также извлекал изображения из базы данных, но я не уверен, как и мои исследования ничего не дали :( Любая помощь будет оценена!

EDIT: getImages в курсе выглядит следующим образом.

/**
 * Get images
 *
 * @return \Doctrine\Common\Collections\Collection
 */
public function getImages()
{
    return $this->images;
}
  • 0
    Можем ли мы увидеть функции getCourseImages() и / или getImages() для объекта Course ?
  • 1
    Я хочу предложить вам взглянуть на то, что CraueGeoBundle - это функция Doctrine для расчета географических расстояний в вашем проекте Symfony2. Вы можете потратить две минуты, чтобы взглянуть на раздел использования для удаленного запроса.
Показать ещё 1 комментарий
Теги:
doctrine2

1 ответ

1

Найденный вопрос, у меня не было параметра inversedBy. Спасибо за комментарии в любом случае.

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню