一对多关系:如何设置默认实体值?

时间:2014-10-22 15:19:47

标签: symfony doctrine-orm doctrine

我有一对多的关系Cart-SendingMethod。我想为新SendingMethod设置默认Carts。所以我试过这个:

<?php
/**
* @ORM\ManyToOne(targetEntity="MetodoEnvio", inversedBy="metodoEnvios")
* @ORM\JoinColumn(name="metodo_envio_id", referencedColumnName="id")
**/
private $metodoEnvio = 1;

但不起作用......我明白了:

Impossible to access an attribute ("id") on a integer variable ("1") when I call Cart.SendingMethod.id from a view file

那么如何为新SendingMethod设置默认Products

我可以在控制器中执行此操作,但我想知道实体是否可以Product

注意:我不确切地知道这是一个symfony还是一个学说问题。

2 个答案:

答案 0 :(得分:0)

只需在构造函数中设置属性的默认值,如下所示:

public function __construct(..)
{
   $this->property = new OtherObject();
}

答案 1 :(得分:0)

您不想将依赖项引入您的实体。

显而易见且更干净的方法是创建CartFactory服务,并将其注入需要创建购物车的任何控制器(或其他类)。将EntityManager和其他依赖项注入工厂。这样你就可以干掉你的购物车初始化代码,并避免让控制器膨胀。