如何将序列化数组持久化到数据库


how to persist serialized array to database?

我使用的是Symfony2和FOSUserBundle。

我序列化了一个数组,并将其保存为数组类型。如何将关联数组持久化到数据库中?

我收到错误…:EntityManager#persist() expects parameter 1 to be an entity object, array given.

EntityManager#persist() expects parameter 1 to be an entity object, string given.

取决于我坚持使用的数组。

        $this->userCartArrayValues = serialize($cartArray);
        $em->persist($this->userCartArrayValues);
        // $em->persist($cartArray);
        $em->flush();
        var_dump($this->userCartArrayValues);

感谢您的帮助,谢谢!

您可以将数组强制转换为对象,如so…

$object = json_decode(json_encode($array), FALSE);
持久化方法只接受实体对象。无法发送序列化数据。我认为最好的解决方案是直接从实体对象而不是数组中获取数据。或者您也可以使用JMSSerializerBundle。
$foo = new Foo();
$foo->setBar($cartArray['bar']);
$em->persist($foo);
$em->flush();

或者这有点混乱,但您可以创建新的实体对象并设置值,然后可以持久化。