Eager loading of related entity in Symfony 2

前端 未结 2 1055
[愿得一人]
[愿得一人] 2021-01-04 04:06

There are three entities: Customer, Messages, Attachments.

The relationship between these entities is straight forward: A customer can have many messages and a messa

2条回答
  •  无人及你
    2021-01-04 04:32

    the correct code example might be like the following:

    NOTE: fetch message with lazy loading, i.e. get messages with additional query proactively; as long as the messages are fetched from database, the corresponding attachments referenced to each message will be loaded automatically.

    Customer

    class Customer
    {
        /**
         * @var integer
         *
         * @ORM\Column(name="id", type="integer")
         * @ORM\Id
         * @ORM\GeneratedValue(strategy="AUTO")
         */
        private $id;
    
        /**
         * @ORM\OneToMany(targetEntity="Message", mappedBy="customer", fetch="LAZY")
         * @ORM\OrderBy({"createdOn" = "DESC"})
         */
        private $messages;
    

    Message

    class Message
    {
        /**
         * @var int
         *
         * @ORM\Column(name="id", type="integer")
         * @ORM\Id
         * @ORM\GeneratedValue(strategy="AUTO")
         */
        private $id;
    
        /**
         * @ORM\ManyToOne(targetEntity="Customer", inversedBy="messages")
         * @ORM\JoinColumn(name="customer_id", referencedColumnName="id")
         */
        private $customer;
    
        /**
         * @ORM\OneToMany(targetEntity="Attchment", mappedBy="message", fetch="EAGER")
         */
        private $attachments;
    

    Attachment

    class Attachment
    {
        /**
         * @var integer
         *
         * @ORM\Column(name="id", type="integer")
         * @ORM\Id
         * @ORM\GeneratedValue(strategy="AUTO")
         */
        private $id;
    
        /**
         * @ORM\ManyToONe(targetEntity="Message", inversedBy="attachments")
         * @ORM\JoinColumn(name="message_id", referencedColumnName="id")
         */
        private $message;
    

提交回复
热议问题