首页 > 解决方案 > 如何将计算/公式字段添加到 Doctrine 实体中?

问题描述

我想@Formula在 Doctrine 实体中使用相当于 Hibernate 的注释。

我的问题是关于datetime我想以某种格式(RFC2822)呈现的字段,以便我可以在 Datatables javascript 中轻松使用它。

我想避免使用数据表中的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);
}

是否可以不必使用Doctrine中繁重的自定义映射类型?

标签: phpsymfonydoctrine-ormdoctrine

解决方案


推荐阅读