undefinedman
undefinedman

Reputation: 670

Doctrine2 OneToMany relation is null within the same request

So i have the following mapping:

Order entity

/**
 * Order
 *
 * @ORM\Table(name="`order`")
 * @ORM\Entity
 */
class Order
{
    /**
     * @var integer
     *
     * @ORM\Column(type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $id;

    // ... //

    /**
     * @ORM\OneToMany(targetEntity="OrderItem", mappedBy="order")
     */
    private $items;

    // ... //

OrderItem entity

 /**
 * OrderItem
 *
 * @ORM\Table(name="order_item")
 * @ORM\Entity
 */
class OrderItem
{
    /**
     * @var integer
     *
     * @ORM\Column(type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $id;

    // ... //

    /**
     * @ORM\ManyToOne(targetEntity="Order", inversedBy="items")
     * @ORM\JoinColumn(referencedColumnName="id")
     */
    private $order;

    // ... //

The problem I experience is when I try to dump $order->getItems() after flushing it remains NULL. Eveything is inserted fine to the database with the correct ids and when I try to get the order in the NEXT request it does contain items in $order->getItems() so no doubt it does work.

But it does not work (giving NULL) with the same request.

Look at the code below:

    $manager = $this->getDoctrine()->getManager();

    $order = new Order();
    $orderItem = new OrderItem();
    $orderItem
            ->setOrder($order)
    ;

    $manager->persist($order);
    $manager->persist($orderItem);

    dump($order->getItems()); // returns NULL
    // but in the next request it will contain items

So how can I get those items within the same request? I need to generate the order and return the items... any idea?

Upvotes: 0

Views: 38

Answers (1)

Paul Le Corre
Paul Le Corre

Reputation: 72

In class OrderItem, maybe.

public setOrder(Order $order)
{
    $order->addItem($this);
    $this->ordder = $order;
}

Upvotes: 1

Related Questions