控制器响应中的 Symfony 3.4 实体额外列
Symfony 3.4 entity extra columns in controller response
我有这个实体:
<?php
//namespace
//use ...
class Guide
{
private $id;
//private ...
//getters
//setters
}
?>
在控制器中,我使用实体管理器来检索该实体的数据。
$guides= $em->getRepository('AppBundle:Guide')
->findAll();
我的实体有 4 个参数:id、name、pages、author。
有没有办法添加两个额外的参数,它们不在 class 声明中,我不想在数据库中,如果实体管理器 returns 例如 3 行,我想要 o向每一行和 return 数据添加两个额外值,例如添加两个布尔值: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\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";
}
然后您可以序列化您的数据,而无需在 table
中添加其他列
我有这个实体:
<?php
//namespace
//use ...
class Guide
{
private $id;
//private ...
//getters
//setters
}
?>
在控制器中,我使用实体管理器来检索该实体的数据。
$guides= $em->getRepository('AppBundle:Guide')
->findAll();
我的实体有 4 个参数:id、name、pages、author。 有没有办法添加两个额外的参数,它们不在 class 声明中,我不想在数据库中,如果实体管理器 returns 例如 3 行,我想要 o向每一行和 return 数据添加两个额外值,例如添加两个布尔值: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\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";
}
然后您可以序列化您的数据,而无需在 table
中添加其他列