我有一个班级Commande和一个班级Panier。 第一个包含第二个作为属性。
第一个也被定义为服务。 我想使用我的Commande对象的相同实例,但我也想使用其Panier对象的相同实例。
在我的第一次测试后看起来比每次重新创建Panier对象;例如,如果我尝试在其中添加一些文章,则文章不会保存。
有什么特别的事吗?我是否还必须将Panier类定义为服务并将其注入Command 1?
class Commande
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @Assert\Type(type="LeJardinEbene\Bundle\Entity\Panier")
*
* @ORM\OneToOne(targetEntity="LeJardinEbene\Bundle\Entity\Panier", inversedBy="commande")
* @ORM\JoinColumn(nullable=false)
*/
private $panier;
public function __construct() {
$this->setPanier(new Panier());
}
服务:
commande:
class: LeJardinEbene\Bundle\Entity\Commande
tags:
- { name: commande, alias: commande }
在我的控制器中,以下是我获取Panier对象的方法:
$panier = $this->get('commande')->getPanier();
谢谢你们。
此致
答案 0 :(得分:1)
每次创建一个Command时,你都会实例化一个新的Panier(),所以每次都会重新创建它。
尝试传入$ panier作为构造函数参数
public function __construct(Panier $panier) {
$this->panier = $panier;
}