【问题标题】:Entity object to array实体对象到数组
【发布时间】:2019-02-07 21:16:24
【问题描述】:

我正在尝试将实体转换为关联数组。
看来toArray()这个方法对实体对象是不可用的。

阅读 Symfony 文档,看来我应该使用 SerializerInterface
启用后,我似乎找不到将实体转换为关联数组的正确语法。

有人可以更正我的代码吗?

use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
use Symfony\Component\Serializer\SerializerInterface;

// -----------------------

public function salleAction(Request $request, Projet $projet, SerializerInterface $serializer) {
    return this->json(array(
        'projet'=>$serializer->serialize($projet, new ObjectNormalizer())
    ));
}

使用上面的代码,我收到此错误消息

警告:isset 中的偏移类型非法或为空

如果我将new ObjectNormalizer() 替换为'jsons',我会收到下一条错误消息:

序列化类“AppBundle\Entity\Projet”的对象时检测到循环引用(配置限制:1)

【问题讨论】:

    标签: symfony symfony-3.4


    【解决方案1】:

    我建议你将以下方法添加到需要转换的对象中

    public function toArray()
    {
        return get_object_vars($this);
    }
    

    并在任何地方使用它$array = $projet->toArray();

    【讨论】:

    • 它工作正常,但有些事情不“正确”。首先,拥有方的日期时间和属性(实体关系)是对象而不是简单的值。其次,反面的属性被包含为 emtpy 对象,我想排除它们。有可能解决这个问题吗?
    • 这只是一个基本示例,您可以根据您的特定需求自定义此方法,这就是为什么我建议将该方法附加到一个实体,因为该方法针对每个特定情况都是特定的。
    猜你喜欢
    • 1970-01-01
    • 2016-08-10
    • 2011-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-04
    • 1970-01-01
    • 2011-08-20
    相关资源
    最近更新 更多