3

次のようなエンティティがあります。

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

doctrine でクエリを実行して、既存のフィールドと別のフィールド (この場合、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 に答える