我面前有一个简单的任务,但我发现自己几乎无法完成它。 我的模型非常复杂,所以为了具体,我会尝试简化。
我有两个实体,Call和Caller,带有我通过自定义服务访问的实体存储库。我正在使用JMS Serializer Bundle。所有实体都被正确映射,整个过程工作得非常好。但我有这个想法,我不能发生。到了这一步...... 这些是我描述的实体:
--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注释,但这次未能真正了解如何使用它(因为从实体访问存储库或服务不是一个好习惯)。
这些是我的方法:
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();
}
希望听到你对此的看法,因为我真的很难找到溶剂。