Symfony 2 Doctrine export to JSON

后端 未结 3 484
一生所求
一生所求 2021-01-18 12:15

I\'m using Symfony 2 with Doctrine 2 to create a web service(JSON) for an iOS app.

To fetch my entity i do:

$articles = $this->getDoctrine()->g         


        
相关标签:
3条回答
  • 2021-01-18 12:53

    If you use a doctrine query you can also do this:

      $em = $this->getDoctrine()->getEntityManager();
      $query = $em->createQuery('SELECT ma FROM UdoPaddujourBundle:MenuArticle ma ...etc');
      $myArray = $query->getArrayResult();
    

    and then json_encode($myArray); See here for more details

    0 讨论(0)
  • 2021-01-18 12:54

    If you're coming from a symfony 1.x background, there was a lot more "magic" available for entities, including helpers to convert to arrays and so forth.

    In Symfony2, most of the magic is gone; entities in particular are now plain old PHP objects that happen to be managed by Doctrine 2 for persistence to the database, which means that to have methods such as toArray() available on your domain object, you must implement them yourself. It should be fairly trivial to do -- simply return a key-value array with ("name of property" => "value of property")... if you have relationships set up with other entities, you'll need to implement a toArray() method on those as well, and simply call that from the main entity when you're converting.

    Then, once you have your object array, $json = json_encode($array); will give you a JSON string to send as your response.

    0 讨论(0)
  • 2021-01-18 13:00

    You can use json_encode($articles) when you entity (or any other object) implements JsonSerializable:

    <?php
    
    namespace My\AppBundle\Entity;
    
    use JsonSerializable;
    
    class Channel implements JsonSerializable
    {
    
        /*
         * All your fields, getters and setters.
         */
    
        /**
         * Returns serializable items.
         *
         * @return array
         */
        public function jsonSerialize()
        {
            return [
                'name' => $this->getName(),
                'description' => $this->getDescription(),
            ];
        }
    }
    
    0 讨论(0)
提交回复
热议问题