我正在努力找到一种在sym2实体中存储对象数组的好方法。数组中的对象如下所示:
{
"id" : 1,
"top" : 200,
"left" : 150,
"width" : 500,
"height" : 600
}
我应该像这样选择数组属性吗?
/**
* @var array $modules
*
* @ORM\Column(name="modules", type="array", nullable=true)
*/
private $modules;
/*
{
"id" : 1,
"left" : 150,
"top" : 200,
"width" : 500,
"height" : 600
}
*/
或者是否有更平滑的方式,我可以将此数组中包含的对象创建为单独的实体,并在此实体中存储这些实体的数组吗?
我不想单独将它们保存到数据库中,我想将它们保存在这个主要实体中。我知道我可以建立多对多的关系,但我不想,这对我想要完成的事情来说有点过分。
-----更新------- 感谢Guillaume Verbal,这就是我要做的,我认为这样可以正常工作,因为JSON可以无限地使用嵌套对象吗?
$person[0] = new Acme\Person();
$person->setName('foo');
$person->setAge(99);
$person[1] = new Acme\Person();
$person->setName('foo');
$person->setAge(99);
$jsonContent = $serializer->serialize($person, 'json');
// $jsonContent contains {"name":"foo","age":99}
答案 0 :(得分:4)
您可以使用Symfony 2 Serializer组件:http://symfony.com/doc/current/components/serializer.html
use Symfony\Component\Serializer\Serializer;
use Symfony\Component\Serializer\Encoder\XmlEncoder;
use Symfony\Component\Serializer\Encoder\JsonEncoder;
use Symfony\Component\Serializer\Normalizer\GetSetMethodNormalizer;
$encoders = array(new XmlEncoder(), new JsonEncoder());
$normalizers = array(new GetSetMethodNormalizer());
$serializer = new Serializer($normalizers, $encoders);
$person = new Acme\Person();
$person->setName('foo');
$person->setAge(99);
$jsonContent = $serializer->serialize($person, 'json');
// $jsonContent contains {"name":"foo","age":99}
答案 1 :(得分:1)