Я установил отношения "один к одному" между объектом школы и объектом учащихся, я связал их вместе, используя отношение manyToOne;
Элемент учащихся:
/**
* @var \Doctrine\Common\Collections\Collection
* @ManyToOne(targetEntity="Schools", inversedBy="Students")
* @JoinColumn(name="school_id", referencedColumnName="school_id")
*/
private $Schools;
Сущность школы:
/**
* @var \Doctrine\Common\Collections\Collection
* @OneToMany(targetEntity="Students", mappedBy="Schools")
*/
private $Students;
Это работает, как и ожидалось.
Я пытаюсь написать запрос для таблицы учеников, в которой указывается school_idно я не знаю, как указать это в запросе;
$qb->select('t.position')
->from('\Entities\Students', 't')
->where($qb->expr()->eq('t.studentId', ':student_id'))
->andWhere($qb->expr()->eq('t.Schools.schoolId', ':school_id')) // doesn't work
->setParameters(array('student_id' => $this->studentId, 'school_id' => $school_id));
Я пытался получить доступ к школьному идентификатору через свойство $ Schools, которое я установил в личности учащегося, но это выдает ошибку.
В качестве временного исправления я создал свойство $ schoolId в сущности «Студенты» и использую его вместо этого, но, конечно, это неправильный способ сделать это.
Оцените помощь.
ОБНОВЛЕНИЕ
Я получил его, изменив строку;
->andWhere($qb->expr()->eq('t.Schools.schoolId', ':school_id')) // doesn't work
Кому:
->andWhere($qb->expr()->eq('t.Schools', ':school_id'))
Однако то же самоеподход не работает со следующим запросом:
$qb->select('DISTINCT t.age, s.Schools') // Doesn't work
->from('\Entities\Schools', 't')
->innerJoin('t.Students', 's')
Следующая ошибкаили отображается:
[Semantical Error] line 0, col 28 near 'Schools FROM': Error: Invalid PathExpression. Must be a StateFieldPathExpression.