У меня есть 2 класса, которые я хочу выбрать из БД, используя 1 запрос в Symfony2 Doctrine.Doctrine select несколько объектов
Первый объект - Calculation
, а второй - Polynomial
. Они имеют 1: 1 отношение:
/**
* Acme\UserBundle\Entity\Calculation
*
* @ORM\Table(name="Calculation")
* @ORM\Entity(repositoryClass="AppBundle\Entity\CalculationRepository")
*/
class Calculation {
//...
/**
* @ORM\OneToOne(targetEntity="Polynomial")
* @ORM\JoinColumn(name="result_polynomial_id", referencedColumnName="id", nullable=false)
**/
private $resultPolynomial;
//...
}
У меня есть запрос, который возвращает мне все расчеты одного пользователя:
public function findByUser($user) {
return $this->getEntityManager()->createQuery(
'SELECT c
FROM AppBundle:User u
JOIN AppBundle:Polynomial p WITH u = p.user
JOIN AppBundle:Calculation c WITH p = c.resultPolynomial
WHERE u = :user
ORDER BY c.id'
)
->setParameter('user', $user)
->getResult();
}
И на вопрос ... Есть ли способ получить resultPolynomials из вычисления в одном запросе? Если я использую что-то вроде SELECT c, c.resultPolynomial
я получаю сообщение об ошибке:
[Semantical Error] line 0, col 12 near 'resultPolynomial
': Error: Invalid PathExpression. Must be a StateFieldPathExpression.
И если я использую foreach
цикл всех расчеты, чтобы получить их resultPolynomials есть много запросов к БД (1 для каждого расчета), и это не хорошо для производительности если у меня много расчетов.