2
我有2个类,我想从数据库中选择使用Symfony2学说1查询。学说选择多个对象
第一个实体是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有很多查询到DB(1为每个计算),这是不利于业绩如果我有很多计算。