控制器响应中的Symfony 3.4实体额外列

控制器响应中的Symfony 3.4实体额外列,symfony,symfony-3.4,Symfony,Symfony 3.4,我有这个实体: <?php //namespace //use ... class Guide { private $id; //private ... //getters //setters } ?> 我的实体有4个参数:id、名称、页面、作者。 有没有办法添加两个额外的参数,它们不在类声明中,也不在数据库中,如果实体管理器返回例如3行,我想向每行添加两个额外的值并返回数据,例如添加两个布尔值:ok=>true,warning=>false 我试

我有这个实体:

<?php
//namespace
//use ...
class Guide
{
    private $id;
    //private ...

    //getters
    //setters
}
?>
我的实体有4个参数:id、名称、页面、作者。 有没有办法添加两个额外的参数,它们不在类声明中,也不在数据库中,如果实体管理器返回例如3行,我想向每行添加两个额外的值并返回数据,例如添加两个布尔值:ok=>true,warning=>false

我试过这个:

foreach($guides as $guide){
    $guide->ok=true;
    $guide->warning=false;
}
如果我转储$guides,我会看到如下两个参数:

-id:1
-name:'Guide 1'
-pages:12
-author:'John'
+"ok":true
+"warning":false
但当我用它来发送响应时:

return new Response($serializer->serialize($guides, 'json'));

这两个额外参数不在响应中。

您可以向实体添加属性,而不将其标记为ORM\列,例如:

<?php
//...

/**
 * @ORM\Entity
 * @ORM\Table(name="guides")
 */
class Guide
{
    /**
     * @ORM\Column(type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;
     /**
     * @var string
     * @ORM\Column(name="title", type="string")
     */
    private $name;
    public $myAdditionalProperty;
//...

然后,您可以序列化数据,而无需在表中添加其他列

您可以向实体添加属性,而不将其标记为ORM\column,例如:

<?php
//...

/**
 * @ORM\Entity
 * @ORM\Table(name="guides")
 */
class Guide
{
    /**
     * @ORM\Column(type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;
     /**
     * @var string
     * @ORM\Column(name="title", type="string")
     */
    private $name;
    public $myAdditionalProperty;
//...
然后可以序列化数据,而不必在表中增加列

foreach($guides as $guide){
    $guide->myAdditionalProperty = "my amazing value";
}