Дополнительные столбцы объекта Symfony 3.4 в ответе контроллера - PullRequest
0 голосов
/ 16 апреля 2019

У меня есть этот объект:

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

    //getters
    //setters
}
?>

В контроллере я использую диспетчер сущностей для извлечения данных этой сущности.

$guides= $em->getRepository('AppBundle:Guide')
        ->findAll();

Моя сущность имеет 4 параметра: идентификатор, имя, страницы, автор. Есть ли способ добавить два дополнительных параметра, которых нет в объявлении класса, и я не хочу в базе данных, если менеджер сущностей возвращает, например, 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'));

Два дополнительных параметра отсутствуют в ответе.

1 Ответ

1 голос
/ 16 апреля 2019

Вы можете добавить свойство к сущности и не помечать его как 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";
}

Тогда выможет сериализовать ваши данные без дополнительного столбца в вашей таблице

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...