Как добавить вычисляемые поля или поля формулы в сущности доктрины? - PullRequest
0 голосов
/ 07 февраля 2019

Я хотел бы использовать эквивалент аннотаций @Formula Hibernate в сущностях Doctrine.

Моя проблема касается поля datetime, которое я хотел бы визуализировать в определенном формате (RFC2822), чтобыЯ могу легко использовать его в JavaScript-файле Datatables.

Я бы хотел избежать использования функций render из Datatables.Я хотел бы использовать эту сущность как обычно из QueryBuilder.Я уже пытался реализовать класс JsonSerializable в моей сущности, который довольно хорошо работает, но лежащие в основе ассоциации ManyToOne не json_encoded должным образом.

Вот пример моей сущности:

/**
 * @ORM\Table(name="user")
 * @ORM\Entity
 */
class User{

/**
 * @var int
 *
 * @ORM\Column(name="id", type="integer", nullable=false)
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="IDENTITY")
 */
private $id;

/**
 * @var \DateTime|null
 *
 * @ORM\Column(name="start_date", type="date", nullable=true)
 */
private $startDate;

//Getters & setters...
}

Я использую это в своем UserRepository следующим образом:

$qb = $this->getEntityManager()->createQueryBuilder();
$qb->select('l, u')
    ->from('User', 'u')
    ->join('u.location', 'l')
    ->where('u.userId=1');
$data['json']=$qb->getQuery()->getResult();

Использование getArrayResult() не меняет моего интереса.

Я хотел бы создать новый метод (или, может быть,личное статическое поле) как getStartDateRFC() в моей сущности:

public function getStartDateRFC(){
    return $this->startDate->format(DateTime::RFC2822);
}

Было бы возможно без необходимости использовать тяжелые Пользовательские типы сопоставления из Doctrine?

...