2013-01-16 45 views
2

我有一个实体如下:获得自定义字段2

private $username; 
private $password; 
private $createdAt; //datetime 

我想运行在教义查询与现有的字段以及另一场(在这种情况下,一列显示的差异来获得实体。 的createdAt并在几分钟内当前日期时间在SQL我将运行像查询:

select username, password, createdAt,TIMESTAMPDIFF(MINUTE , created_at, NOW()) AS minutes from users 

在教义我拿来如下实体:

$user = $em->getRepository('TestBundle:Users'); 

如何从教义中获得自定义字段的分钟数?

回答

5

您应该检查ResultSetMapping

并检查如何添加scalar result

$rsm = new ResultSetMapping; 
$rsm->addEntityResult('Users', 'u'); 
$rsm->addFieldResult('u', 'id', 'id'); 
$rsm->addFieldResult('u', 'password', 'password'); 
$rsm->addScalarResult('minutes', 'minutes'); 

$query = $this->_em->createNativeQuery('select username, password, TIMESTAMPDIFF(MINUTE , created_at, NOW()) AS minutes', $rsm); 

$users = $query->getResult(); 
+0

does createNativeQuery返回结果集(数组)还是实体? – sonam

+1

上面的查询将返回一个包含用户对象和标量字段分钟的数组。如果删除标量字段,它将是用户实体。 – Venu

1

您可以设置功能的实体里面像

function GetDifference() { 
    return getField1() - getField2() 
} 

那么就会为您提供每个对象

编辑: 它非常容易。就像任何其他功能

function getDateDifference() { 
return abs(strtotime($createdAT) - strtotime($now)); 
} 
+0

你可以给我举例说明我的代码 – sonam

+0

以及这里的逻辑在于我一直在做的php,但我想在mysql查询中执行此操作。 – sonam