尝试使用JMS将虚拟属性添加到Symfony2中的查询结果

尝试使用JMS将虚拟属性添加到Symfony2中的查询结果,symfony,doctrine,jmsserializerbundle,Symfony,Doctrine,Jmsserializerbundle,我面前有一个简单的任务,但我发现自己几乎没有能力完成它。 我的模型相当复杂,所以为了具体起见,我会尽量简化 我有两个实体,Call和Caller,以及通过自定义服务访问的实体存储库。我正在使用JMS序列化程序包。所有实体都映射正确,整个过程运行良好。但我有一个想法,我就是不能让它发生。说到点子上。。。 以下是我描述的实体: --Call-- #call_id location date_created Caller --Caller-- #caller_id phone_num 其想法是列出

我面前有一个简单的任务,但我发现自己几乎没有能力完成它。 我的模型相当复杂,所以为了具体起见,我会尽量简化

我有两个实体,Call和Caller,以及通过自定义服务访问的实体存储库。我正在使用JMS序列化程序包。所有实体都映射正确,整个过程运行良好。但我有一个想法,我就是不能让它发生。说到点子上。。。 以下是我描述的实体:

--Call--
#call_id
location
date_created
Caller

--Caller--
#caller_id
phone_num
其想法是列出所有调用及其字段,例如:

New York, 2015.12.12. 20:07:06, Novak Djokovic, 3816976548 [YY]
London, 2015.12.13. 20:07:06, Jelena Jankovic, 3811116333 [XX]
字段YY和XX表示数据库中已存在的具有该特定号码的呼叫数

我有一个查询返回不带YY和XX值的列表,还有一个单独的查询返回特定号码的呼叫数。当我试图加入他们时,事情变得复杂了。我不知道该怎么做

我读过关于JMS的VirtualProperty注释,但这次没有真正了解如何使用它(因为从实体访问存储库或服务不是一个好的做法)

以下是我的方法:

1-获取呼叫者的所有呼叫列表 2-根据呼叫作为参数从特定号码获取呼叫数 希望听到你的意见,因为我真的很难找到解决办法

public function findAllCalls()
    {
        $callerAlias = "c";

        //getAlias method returns the alias of the current entity (call)
        $qb = $this->createQueryBuilder($this->getAlias());
        $qb->leftJoin($this->getAlias() . '.caller', $callerAlias);
        return $qb->getQuery()->getResult();
    }
public function getNumberOfCalls(Call $call) {

        $callerAlias = "c";

        $qb = $this->createQueryBuilder($this->getAlias());
        $qb->leftJoin($this->getAlias() . '.caller', $callerAlias);
        $qb->select("COUNT(" . $this->getAlias() . ".call_id)");
        $qb->where($callerAlias.".phonenbr = ".$call->getPhoneNumber());

        return $qb->getQuery()->getScalarResult();
    }