symfony2 doctrine实体数组可能吗?

时间:2013-11-12 12:18:48

标签: database symfony doctrine entity

我正在努力找到一种在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}

2 个答案:

答案 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)