我想在Doctrine实体中使用等同于Hibernate的@Formula
注释。
我的问题与我想以某种格式(RFC2822)呈现的datetime
字段有关,以便可以在Datatables javascript中轻松使用它。
我想避免使用Datatables的render
功能。
我想照常使用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);
}
是否有可能不必使用教义中沉重的Custom Mapping Types?