2013-01-16 43 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