所以我有以下映射:
Order
实体
/**
* 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
实体
/**
* 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;
// ... //
我遇到的问题是,当我在刷新后尝试转储$order->getItems()
时,它仍然是NULL
。使用正确的ID将Eveything正确插入到数据库中,当我尝试在NEXT请求中获取订单时,它确实包含$order->getItems()
中的项目,所以毫无疑问它确实有效。
但它不起作用(给NULL
)相同的请求。
请看下面的代码:
$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
那么如何才能在同一个请求中获取这些项目?我需要生成订单并返回项目......任何想法?
答案 0 :(得分:1)
在班级 OrderItem 中,也许吧。
public setOrder(Order $order)
{
$order->addItem($this);
$this->ordder = $order;
}