Symfony学说中的许多关系

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Symfony学说中的许多关系相关的知识,希望对你有一定的参考价值。

我有一个代理商实体,其字段是$ owns

好像

      /**
     * @ORMManyToMany(targetEntity="AppBundleEntityShipType", inversedBy="owners")
     */
    protected $owns;

在ShipType实体我有

/**
 * @ORMManyToMany(targetEntity="AppBundleEntityAgency", mappedBy="owns")
 */
private $owners;

doctrine为使用agency_id和ship_type_id的表之间的关联创建了一个关系表

我正在尝试获得一个表格,以便将每个机构分配给一种船型(拥有)我试图实现作为代理商的记录

到目前为止我得到了

   public function gShips(Request $request): Response {
    $u = $this->getUser();
    $ag = new Agency();
    $form = $this->createForm(ChooseShipsType::class, $ag);
    $form->handleRequest($request);

    if ($form->isSubmitted() && $form->isValid()) {
        $em = $this->getDoctrine()->getManager();
        $a = $form->getData();
        $em->persist($a);
        $em->flush();

    }

    return $this->render('agency/sships.html.twig', [
        'adForm' => $form->createView()
    ]);
}

和形式

 public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('ships', EntityType::class, [
            'class' => 'AppBundle:ShipType',
            'expanded'  => true,
            'multiple'  => true,
        ])
        ->add('save', SubmitType::class)
    ;
}

public function configureOptions(OptionsResolver $resolver)
{
    $resolver->setDefaults([
        'data_class' => 'AppBundleEntityAgency'
    ]);
}

表单正在显示,但无法让它继续存在,因为它正在尝试创建一个新的代理,我无法弄清楚如何使用这两个表之间的关系表

先感谢您

答案

检查您的Agency类的构造函数。确保它具有以下内容:

$this->owns = new ArrayCollection();

然后,确保你有一个addOwns()方法:

public function addOwns(ShipType $shipType) 
{
    $this->owns[] = $shipType;
}

还有一个二传手:

public function setOwns($owns)
{
    if ($owns instanceof ArrayCollection) {
        $this->owns = $owns;
    } else {
        if (!$this->owns->contains($owns)) {
            $this->owns[] = $owns;
        }
        $this->owns;
    }
    return $this;
}

此外,请确保您拥有默认内容的getter。那应该做。

PS:你不应该把你的属性命名为动词,但这是另一回事。

以上是关于Symfony学说中的许多关系的主要内容,如果未能解决你的问题,请参考以下文章

推进学说代码片段

与复合唯一约束的关系(symfony + 学说)

与学说 Symfony 的条件关系

Symfony 固定装置和多对多关系(学说)

Symfony学说OneToAll关系

Symfony2,学说和数据域