Join 连接上的orm计数1:n关系
我使用的是symfony2的admingenerator模块,无法对两个表进行选择计数。 如果您能想到这一点,我将不胜感激。提前多谢强> 这是querybuilder的表达式:Join 连接上的orm计数1:n关系,join,symfony,count,doctrine,query-builder,Join,Symfony,Count,Doctrine,Query Builder,我使用的是symfony2的admingenerator模块,无法对两个表进行选择计数。 如果您能想到这一点,我将不胜感激。提前多谢 这是querybuilder的表达式: class ListController extends BaseListController { protected function getQuery() { $query = $this->getDoctrine() ->getEntityMa
class ListController extends BaseListController
{
protected function getQuery()
{
$query = $this->getDoctrine()
->getEntityManager()
->createQueryBuilder()
->select('q, count(f.fbid) AS no')
->from('Shlomi\UsersBundle\Entity\users', 'q')
->leftJoin('q.fbid' , 'f')
->groupBy('q.fbid');
$this->processSort($query);
$this->processFilters($query);
$this->processScopes($query);
return $query->getQuery();
}
}
我使用的两个实体是:
class Users
{
/**
* @var integer $id
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var bigint $fbid
*
* @ORM\OneToMany(targetEntity="Friendships", mappedBy ="fbid")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="fbid", referencedColumnName="fbid")
* })
*/
private $fbid;
....
及
鉴于Friendships中的关联注释是由doctrine:generate entities(包含来自Users.fbid的fbid外键引用)自动生成的,据我所知,Users(1:n)中的注释是手动插入的
我尝试了一次又一次地编辑查询生成器和注释,但最终得到以下结果:
在呈现模板的过程中引发了异常(“可捕获的致命错误:无法在C:\xampp\htdocs\symfony2\app\cache\dev\twig\ea\85\2b678090e942db52cc01e3950dbc.php第225行中将类的对象\ORM\PersistentCollection转换为字符串”)在第92行的Admingenerated/ShlomiUsersBundle/Resources/views/UsersList/index.html.twig中
谢谢,
离子试试:
$qb = $this->getDoctrine()
->getEntityManager()
->createQueryBuilder();
$query = $qb->select('q', $qb->expr()->count('f.fbid'))
->from('Shlomi\UsersBundle\Entity\users', 'q')
->leftJoin('q.fbid' , 'f')
->groupBy('q.fbid');
制作querybuilder($qb)然后形成查询的这两个步骤非常重要,因此您可以使用$qb方法(例如expr()和count())我似乎完全误解了注释。这个页面包含了建立关系的完整信息,然而,要理解它需要相当多的大脑:随着ORM的工作,不需要计算sql语句中的记录,只需要计算ArrayCollection属性的对象$query=$this->getDoctrine()->getEntityManager()->createQueryBuilder()->select('q,f')->from('Shlomi\UsersBundle\Entity\users','q')->leftJoin('q.friends','f');你能用
admingenerated/ShlomiUsersBundle/Resources/views/UsersList/index.html.twig
中的代码更新这个问题吗?至少在第92行编写代码。正如@Kosta所说,您应该在问题中提供该模板文件。除此之外,您在控制器中使用的是什么类型的水合作用。阵列?
$qb = $this->getDoctrine()
->getEntityManager()
->createQueryBuilder();
$query = $qb->select('q', $qb->expr()->count('f.fbid'))
->from('Shlomi\UsersBundle\Entity\users', 'q')
->leftJoin('q.fbid' , 'f')
->groupBy('q.fbid');