从symfony json结果中的相关数据返回对象的属性

问题描述 投票:1回答:1

我试图返回与实体相关的评论列表。查询结果在运行和返回时,相关字段不提供有意义的结果。

这是注释实体声明

/**
     * @var Books
     *
     * @ORM\ManyToOne(targetEntity="AppBundle\Entity\Books")
     */
    private $imagefk;

    /**
     * @var User
     *
     * @ORM\ManyToOne(targetEntity="AppBundle\Entity\Users")
     */
    private $userfk;

这是我的控制器代码片段,用于获取用户评论到特定书籍的所有评论

private function serializeComments(Comments $cmt) {
        return array(
            'message' => $cmt->getMessage(),
            'userid' => $cmt->getUserfk(),
            'bookid' => $cmt->getBookfk(),
        );
    }

下面的函数调用上面的函数

public function getAllCommentsAction($books)
    {


    $messages = $em->getRepository("AppBundle")->findBy(
        array(
            "imagefk" => $books
        )
    );


    $data = array();

    foreach ($messages as $message)
    {
        array_push($data, $this->serializeComments($message));
    }
    $response = new Response(json_encode($data), 200);
    $response->headers->set('Content-Type', 'application/json');
    return $response;
    }

这是尝试的结果

[{"message":"This is comment for a user one","userid":{"__initializer__":{},"__cloner__":{},"__isInitialized__":false},"bookid":{"path":"http:\/\/10.0.2.2:88\/xxx\/web\/uploads\/pdf\/5ub3uy8zv09cee2avi11.pdf"}}

请问如何从此结果返回对象属性而不是此

"userid":{"__initializer__":{},"__cloner__":{},"__isInitialized__":false},"bookid":{"path":"http:\/\/10.0.2.2:88\/xxx\/web\/uploads\/pdf\/5ub3uy8zv09cee2avi11.pdf"
php json symfony
1个回答
1
投票

尝试访问对象属性:

'userid' => $cmt->getUserfk()->getId(),

代替

'userid' => $cmt->getUserfk(),

希望这有帮助

© www.soinside.com 2019 - 2024. All rights reserved.