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

时间:2016-03-22 15:04:01

标签: php arrays symfony

我正在使用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);

感谢任何帮助,谢谢!

2 个答案:

答案 0 :(得分:0)

你可以将一个数组转换为一个像这样的对象......

$object = json_decode(json_encode($array), FALSE);

答案 1 :(得分:0)

Persist方法只接受实体对象。您无法发送序列化数据。我认为最好的解决方案是直接获取实体对象而不是数组的数据。或者也许您也可以使用JMSSerilizerBundle。

$foo = new Foo();
$foo->setBar($cartArray['bar']);

$em->persist($foo);
$em->flush();

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