相关疑难解决方法(0)

如何在Symfony 2.0 AJAX应用程序中将Doctrine实体编码为JSON?

我正在开发游戏应用程序并使用Symfony 2.0.我对后端有很多AJAX请求.更多的响应是将实体转换为JSON.例如:

class DefaultController extends Controller
{           
    public function launchAction()
    {   
        $user = $this->getDoctrine()
                     ->getRepository('UserBundle:User')                
                     ->find($id);

        // encode user to json format
        $userDataAsJson = $this->encodeUserDataToJson($user);
        return array(
            'userDataAsJson' => $userDataAsJson
        );            
    }

    private function encodeUserDataToJson(User $user)
    {
        $userData = array(
            'id' => $user->getId(),
            'profile' => array(
                'nickname' => $user->getProfile()->getNickname()
            )
        );

        $jsonEncoder = new JsonEncoder();        
        return $jsonEncoder->encode($userData, $format = 'json');
    }
}
Run Code Online (Sandbox Code Playgroud)

我的所有控制器都做同样的事情:获取一个实体并将其一些字段编码为JSON.我知道我可以使用规范化器并对所有权限进行编码.但是,如果一个实体已经循环链接到其他实体呢?或实体图非常大?你有什么建议吗?

我想一下实体的一些编码模式......或者NormalizableInterface用来避免循环..,

ajax doctrine symfony doctrine-orm

87
推荐指数
10
解决办法
11万
查看次数

使用JMS Serializer时禁用Doctrine 2延迟加载?

我在我的Zend项目中使用Doctrine 2 ORM,并且需要在几种情况下将我的实体序列化为JSON.

ATM我使用Querybuilder并加入我需要的所有表.但是我的序列化程序导致学说延迟加载每个相关的实体,导致相当大的数据量并引发递归.

现在我正在寻找一种完全禁用Doctrines延迟加载行为的方法.

我选择数据的方法如下:

$qb= $this->_em->createQueryBuilder()
            ->from("\Project\Entity\Personappointment", 'pa')
            ->select('pa', 't', 'c', 'a', 'aps', 'apt', 'p')
            ->leftjoin('pa.table', 't')
            ->leftjoin('pa.company', 'c')
            ->leftjoin('pa.appointment', 'a')
            ->leftjoin('a.appointmentstatus', 'aps')
            ->leftjoin('a.appointmenttype', 'apt')
            ->leftjoin('a.person','p')
Run Code Online (Sandbox Code Playgroud)

我希望我的结果集只包含选定的表和关联.

任何帮助将不胜感激.

php doctrine serializer jmsserializerbundle

15
推荐指数
2
解决办法
1万
查看次数