Приспособление JSON-объекта с AliceBundle - PullRequest
1 голос
/ 04 июня 2019

Я работаю над приложением PHP с Symfony 4, для которого разрабатываю модульные тесты .

Я хочу создать приборы, чтобы избежать конфликтов с базой данных.
Я использую AliceBundle, но у меня есть некоторые проблемы.

Это моя сущность:

/**
 * @ORM\Table(name="book")
 * @ORM\Entity
 */
class Book
{
    /**
     * @var int
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**

     * @var Type
     *
     * @ORM\ManyToOne(targetEntity="App\Entity\Type", inversedBy="books")
     * @ORM\JoinColumn(nullable=false, onDelete="CASCADE")
     */
    private $type;

    /**
     * @var object
     *
     * @ImportPropertiesConstraint(groups={"propertiesValidation"})
     *
     * @ORM\Column(name="properties", type="json_document")
     */
    private $properties;



    (Getters and Setters)
}

Поле Свойства зависит от поля Тип и соответствует классу NovelProperties .

В базе данных это поле представляет собой json_document , соответствующее NovelProperties сущности.
Я делаю это с помощью Doctrine JSON ODM.
https://github.com/dunglas/doctrine-json-odm

Сущность NovelProperties проста и содержит только строку и целое число.

Это мои файлы фикстур:

book.yaml

App\Entity\Book:
    book_{1..9}:
        type: '@type_novel'
        properties: "{#type:'App\\Entity\\NovelProperties',pages:100,language:'english'}"

bookType.yaml

App\Entity\Type:
    type_novel:
        name: 'novel'
    type_manga:
        name: 'manga'

Для свойств значения я пробовал несколько вещей, которые не работают:
- передать объект как массив ( ОШИБКА: должен быть объектом, задан массив)
- передать объект в виде строки ( ОШИБКА: должен быть объектом, задана строка)
- передать объект как объект JSON ( ОШИБКА: должен быть объектом, задана строка)

Я проверил все синтаксисы для всего.
Я не знаю что делать

...