我正在使用Symfony 4开发PHP应用程序,为此我正在开发单元测试。
我想创建固定装置以避免与数据库冲突。
我使用了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 。
在数据库中,该字段是与 NovelProperties 实体相对应的 json_document 。
我使用捆绑的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对象传递(错误:必须是给定字符串的对象)
我已经测试了所有语法。
我不知道该怎么办。