3

我有一个实体如下:

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');

如何从学说中获取自定义字段分钟?

4

2 回答 2

6

您应该检查ResultSetMapping

并检查如何添加标量结果

$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();
于 2013-01-16T06:54:04.473 回答
1

您可以在您的实体中设置功能,例如

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

然后每个对象都可以使用

编辑:这很容易。就像任何其他功能一样

function getDateDifference() {
return abs(strtotime($createdAT) - strtotime($now));
}
于 2013-01-16T07:23:02.280 回答