加入 DQL SYMFONY
JOIN DQL SYMFONY
我想数一数有多少个宝贝parent
class abonnementRepository extends \Doctrine\ORM\EntityRepository
{
public function SumEnfantDQL($id)
{
$entityManager = $this->getEntityManager();
$query = $entityManager->createQueryBuilder();
$query->select('sum(o.id) AS somme');
$query->from('AppBundle:enfant', 'o');
$query->join('AppBundle:User','p')->where('p.id = :id');
$rez = $query->getQuery()->getResult();
return $rez;
}
}
实体 enfant 有 matricul_prt,实体 user 有 enfant_id,$id 参数是 parent id
我不知道它如何与 join 或 innerJoin 一起工作。所以我想做的是
SELECT SUM(*)
FROM enfant e
WHERE e.matricul_prt = $id;
非常感谢
首先,您应该为 AppBundle:enfant 创建一个存储库 class,这个存储库看起来不像是为 'enfant' 创建的。
接下来该方法应该如下所示,但前提是 'enfant' 和 'User'.
之间存在有效关联
public function SumEnfant(int $id): int
{
return $this->createQueryBuilder('e') <- alias for 'enfant'
->select('sum(e.id)')
->join('e.user', 'u') <- join by entity property
->where('u.id = :id') <- condition for associated entity
->setParameter('id' , $id) <- parameter
->getQuery()
->getSingleScalarResult();
}
试试这个,再次阅读文档并根据您的情况进行修改。
我想数一数有多少个宝贝parent
class abonnementRepository extends \Doctrine\ORM\EntityRepository
{
public function SumEnfantDQL($id)
{
$entityManager = $this->getEntityManager();
$query = $entityManager->createQueryBuilder();
$query->select('sum(o.id) AS somme');
$query->from('AppBundle:enfant', 'o');
$query->join('AppBundle:User','p')->where('p.id = :id');
$rez = $query->getQuery()->getResult();
return $rez;
}
}
实体 enfant 有 matricul_prt,实体 user 有 enfant_id,$id 参数是 parent id 我不知道它如何与 join 或 innerJoin 一起工作。所以我想做的是
SELECT SUM(*)
FROM enfant e
WHERE e.matricul_prt = $id;
非常感谢
首先,您应该为 AppBundle:enfant 创建一个存储库 class,这个存储库看起来不像是为 'enfant' 创建的。 接下来该方法应该如下所示,但前提是 'enfant' 和 'User'.
之间存在有效关联public function SumEnfant(int $id): int
{
return $this->createQueryBuilder('e') <- alias for 'enfant'
->select('sum(e.id)')
->join('e.user', 'u') <- join by entity property
->where('u.id = :id') <- condition for associated entity
->setParameter('id' , $id) <- parameter
->getQuery()
->getSingleScalarResult();
}
试试这个,再次阅读文档并根据您的情况进行修改。