Я работаю над приложением 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 ( ОШИБКА: должен быть объектом, задана строка)
Я проверил все синтаксисы для всего.
Я не знаю что делать