0

我正在尝试找出一种在我的 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}
4

2 回答 2

4

您可以使用 Symfony 2 序列化器组件: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}
于 2013-11-12T13:49:45.113 回答
1

您可以为此使用 JSON 类型

http://symfony.com/doc/current/components/serializer.html

于 2013-11-12T12:56:54.057 回答