Php Symfony2-使用关系序列化对象(多个、一个…)

Php Symfony2-使用关系序列化对象(多个、一个…),php,json,symfony,serialization,entity,Php,Json,Symfony,Serialization,Entity,有人能告诉我是否可以序列化一个有关系的实体吗? json_encode已经工作,但我的对象如下所示: { "id": 1, "lot": 32, "num": "533987", "date_modification": { "date": "2015-02-17 14:24:52", "timezone_type": 3, "timezone": "Europe/Paris" }, "customer": { "id":

有人能告诉我是否可以序列化一个有关系的实体吗? json_encode已经工作,但我的对象如下所示:

{
  "id": 1,
  "lot": 32,
  "num": "533987",
  "date_modification": {
      "date": "2015-02-17 14:24:52",
      "timezone_type": 3,
      "timezone": "Europe/Paris"
  },
  "customer": {
      "id": 1,
      "lastname": "DUFRESNE",
      "firstname": "CHRISTOPHE",
  }
}
{
  "id": 1,
  "lot": 32,
  "num": "533987",
  "date_modification": "2015-02-17",
  "customer": "DUFRESNE CHRISTOPHE",
  }
}
但是我想用otu子对象序列化数据。事实上是这样的:

{
  "id": 1,
  "lot": 32,
  "num": "533987",
  "date_modification": {
      "date": "2015-02-17 14:24:52",
      "timezone_type": 3,
      "timezone": "Europe/Paris"
  },
  "customer": {
      "id": 1,
      "lastname": "DUFRESNE",
      "firstname": "CHRISTOPHE",
  }
}
{
  "id": 1,
  "lot": 32,
  "num": "533987",
  "date_modification": "2015-02-17",
  "customer": "DUFRESNE CHRISTOPHE",
  }
}
所以我查了一下文件: 但我看不出是否有可能与许多人这样的关系合作,以及如何做到这一点

这是我的实体:

/**
 * Subscription (BS)
 *
 * @ORM\Table(name="subscription")
 * @ORM\Entity(repositoryClass="Jcd\LiteyearBundle\Entity\SubscriptionRepository")
 * @ORM\HasLifecycleCallbacks
 */

class Subscription {

    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="lot", type="smallint")
     */
    private $lot;

    /**
     * @var string
     * @ORM\Column(name="num", type="string", length=9)
     */
    private $num;

    /**
     * @var \DateTime
     * @ORM\Column(name="date_creation", type="datetime", nullable=true)
     */
    private $date_creation;

    /**
     * @var \DateTime
     * @ORM\Column(name="date_modification", type="datetime", nullable=true)
     */
    private $date_modification;

    /**
     * @var \DateTime
     * @ORM\Column(name="date_completeness", type="datetime", nullable=true)
     */
    private $date_completeness;

    /**
     * @var \DateTime
     * @ORM\Column(name="date_reception", type="datetime", nullable=true)
     */
    private $date_reception;

    /**
     * @var \DateTime
     * @ORM\Column(name="date_signature", type="datetime", nullable=true)
     */
    private $date_signature;

    /**
     * @var \DateTime
     * @ORM\Column(name="date_entry", type="datetime", nullable=true)
     */
    private $date_entry;

    /**
     * @var \Integer
     * @ORM\Column(name="statement", type="integer", nullable=true)
     */
    private $statement; // Releve du compteur

    /**
     * @var \Integer
     * @ORM\Column(name="statement_kind", type="integer", nullable=true)
     */
    private $statement_kind; // Personne qui a relevé le compteur

    /**
     * @var \Integer
     * @ORM\Column(name="car", type="integer", nullable=true)
     */
    private $car; // Consommation annuelle de reference

    /**
     * @var boolean
     * @ORM\Column(name="pro", type="boolean", options={"default" = false}, nullable=true)
     */
    private $pro;

    /**
     * @ORM\ManyToOne(targetEntity="Jcd\LiteyearBundle\Entity\User", cascade={"persist"}, inversedBy="adv_subscriptions")
     * @ORM\JoinColumn(name="adv_id", referencedColumnName="id", nullable=true)
     */
    private $adv;

    /**
     * @ORM\ManyToOne(targetEntity="Jcd\LiteyearBundle\Entity\User", cascade={"persist"}, inversedBy="vendor_subscriptions")
     * @ORM\JoinColumn(name="vendor_id", referencedColumnName="id", nullable=true)
     */
    private $vendor;

    /**
     * @var \Integer
     * @ORM\Column(name="provider", type="integer")
     */
    private $provider;

    /**
     * @var \Integer
     * @ORM\Column(name="state", type="integer")
     */
    private $state;

    /**
     * @var \Integer
     * @ORM\Column(name="payment", type="integer")
     */
    private $payment;

    /**
     * @var \Integer
     * @ORM\Column(name="billing", type="integer")
     */
    private $billing;

    /**
     * @var string
     * @ORM\Column(name="comment", type="text", nullable=true)
     */
    private $comment;

    /**
     * @var float
     * @ORM\Column(name="wage", type="float", nullable=true)
     */
    private $wage; // Anciennement Rem

    /**
     * @var float
     * @ORM\Column(name="com", type="float", nullable=true)
     */
    private $com; // Anciennement Commission

    /**
     * @var string
     * @ORM\Column(name="offer", type="text", nullable=true)
     */
    private $offer; // Anciennement Prix fixe

    /**
     * @var \Integer
     * @ORM\Column(name="mail_kind", type="integer", nullable=true)
     */
    private $mail_kind; //Anciennement Mail

    /**
     * @ORM\OneToMany(targetEntity="SubscriptionTrack", cascade={"persist", "remove"}, mappedBy="subscription")
     */
    private $tracks;

    /**
     * @ORM\ManyToMany(targetEntity="SubscriptionSalary", cascade={"persist"}, mappedBy="subscriptions")
     **/
    private $salaries;

    /**
     * @ORM\OneToOne(targetEntity="Jcd\LiteyearBundle\Entity\Customer")
     * @ORM\JoinColumn(name="customer_id", referencedColumnName="id")
     **/
    private $customer;

谢谢你的回答

实现所需功能的最简单方法是使用
JMSSerializerBundle
,它具有许多您可能想要使用的功能


试试看:

实现您想要的最简单的方法是使用
JMSSerializerBundle
,它有许多您可能想要使用的功能


试试看:

虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面发生更改,则仅链接的答案可能无效。答案为“使用
JMSSerializerBundle
”。链接只是为了不在谷歌上搜索。如果
JMSSerializerBundle
的更改方式会删除OP寻求的功能或链接更改,您的答案仍然无效。在这种情况下,有人会用新的正确答案回答这个问题。如果我删除链接并编写如何安装此捆绑包的说明,在这种情况下它也将无效;-)同样,这不是唯一的答案。此链接只是为了方便移动到图书馆所在地。可以用谷歌搜索。还有许多其他链接将教您如何通过composer安装它。没有必要发布所有这些链接。虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面发生更改,则仅链接的答案可能无效。答案为“使用
JMSSerializerBundle
”。链接只是为了不在谷歌上搜索。如果
JMSSerializerBundle
的更改方式会删除OP寻求的功能或链接更改,您的答案仍然无效。在这种情况下,有人会用新的正确答案回答这个问题。如果我删除链接并编写如何安装此捆绑包的说明,在这种情况下它也将无效;-)同样,这不是唯一的答案。此链接只是为了方便移动到图书馆所在地。可以用谷歌搜索。还有许多其他链接将教您如何通过composer安装它。没有必要发布所有这些链接。