学说选择多个对象



我有 2 个类,我想使用 Symfony2 Doctrine 中的 1 个查询从数据库中选择。

第一个实体是Calculation的,第二个是Polynomial的。他们有 1:1 的关系:

/**
 * AcmeUserBundleEntityCalculation
 *
 * @ORMTable(name="Calculation")
 * @ORMEntity(repositoryClass="AppBundleEntityCalculationRepository")
 */
class Calculation {
    //...
    /**
     * @ORMOneToOne(targetEntity="Polynomial")
     * @ORMJoinColumn(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();
}

对于问题...有没有办法在一个查询中获取计算的结果多项式?如果我使用类似SELECT c, c.resultPolynomial的东西,我会得到错误:

[Semantical Error] line 0, col 12 near 'resultPolynomial
': Error: Invalid PathExpression. Must be a StateFieldPathExpression.

如果我使用循环所有计算来获得其结果多项式foreach则对数据库有很多查询(每个计算 1),如果我有很多计算,则对性能不利。

我猜是因为您没有发布您的用户定义或多项式定义。

我认为你可以这样制作你的 DQL:

SELECT c, p
FROM AppBundle:User u
JOIN u.polynomial p
JOIN p.calculation c
WHERE u = :user
ORDER BY c.id

我想你已经在模型中定义了你的关系,所以你不需要在这里重复它。

相关内容

  • 没有找到相关文章

最新更新