如何将计算/公式字段添加到学说实体中?

时间:2019-02-07 14:01:54

标签: php symfony doctrine-orm doctrine

我想在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

0 个答案:

没有答案