提问者:小点点

试图坚持所有者的原则


我已经设置了独立于Symfony框架的Doctrine和Symfony表单(因为我不需要大部分)。

我遇到的问题是,当试图坚持一个新的“审计”时,它有一个“类型”原则,似乎想坚持关系的拥有方(类型)。

例如,审计可能具有车辆服务的类型。

 // -- Model/Audit.php --
 /**
 * @var \Model\Type
 *
 * @ORM\ManyToOne(targetEntity="Model\Audit\Type", inversedBy="audits")
 * @ORM\JoinColumn(name="type_id", referencedColumnName="id", nullable=true)
 */
private $type;
/**
 * Set type
 *
 * @param \Model\Type $type
 * @return Audit
 */
public function setType(\Model\Type $type)
{
    $this->type = $type;
    return $this;
}

然后在反面:

/**
 * @ORM\OneToMany(targetEntity="Model\Audit", mappedBy="type")
 * @var type */
private $audits;

public function __construct() {
     $this->audits = new \Doctrine\Common\Collections\ArrayCollection();
}

持久性代码如下所示:

$data = $form->getData();
$entityManager->persist($data);
$entityManager->flush();

最后,form类是:

class AuditType extends AbstractType {

   public function buildForm(FormBuilderInterface $builder, array $options) {
       $builder
            ->add('name')
            ->add('type', 'entity', array(
                'class' => "Model\Type"
            ));
  }

所有这些看起来(至少对我来说)与所有文档中的条令和符号都完全一样,但我发现了一个错误:

通过关系“Model\Audit#type”找到了一个新实体,该关系未配置为级联实体:车辆服务的持久化操作。要解决此问题,请对此未知实体显式调用EntityManager#persist(),或在映射中配置cascade persist此关联,例如@manytone(..,cascade={“persist”})。“”

这确实令人沮丧,因为我不想保留类型方面,我只想(用最基本的术语)将id 3放入Type\u id列。然而,教义似乎认为我想创造一种新的“类型”,而我当然不想。它们已经存在。

使用$entityManager-


共1个答案

匿名用户

我觉得你需要准备一下

/**
 * @ORM\OneToMany(targetEntity="Model\Audit", mappedBy="type")
 * @var type
 */
 private $audits;

 public function __construct() {
 $this->audits = new \Doctrine\Common\Collections\ArrayCollection();
 }

/**
 * @return ArrayCollection
 */
public function getAudits()
{
    return $this->audits;
}

/**
 * @param Audit $audit
 */
public function addAudits(Audit $audit)
{
    $this->audits->add($audit);
    $audit->setTyoe($this);
}

在A型udit.model

     // -- Model/Audit.php --
   /**
   * @var \Model\Type
   *
   * @ORM\ManyToOne(targetEntity="Model\Audit\Type", inversedBy="audits")
   * @ORM\JoinColumn(name="type_id", referencedColumnName="id", nullable=true)
   */
   private $type;
   /**
   * Set type
   *
   * @param \Model\Type $type
   * @return Audit
   */
   public function setType(\Model\Type $type)
   {
      $this->type = $type;
   }