Я хотел бы использовать эквивалент аннотаций Hibernate @Formula в объектах 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?
@LBA Я использую стандартный из PHP. class User implements JsonSerializable. Функция json_encode запускает метод jsonSerialize() моего объекта, но жаль, что вам приходится самостоятельно повторно анализировать каждое свойство/метод, а базовые коллекции не сериализуются.
затем используйте другой нормализатор, такой как Object или GetSet, который позволяет вам добавлять вычисляемые атрибуты и т. д.
Ну, я не под symfony, а с codeigniter. Я посмотрю, можно ли использовать эти библиотеки. Спасибо.
@LBA: не было бы хорошим вариантом создать пользовательскую функцию DQL для преобразования моей даты, как определено здесь? ссылка на сайт






Какой сериализатор вы используете в настоящее время? Компонент Symfony Serializer (какой нормализатор?) или JMS Serializer?