簡體   English   中英

交往學說中的多對多關系

[英]ManyToMany relations in symfony doctrine

我有一個具有$ owns字段的代理商實體

看起來像

  /** * @ORM\\ManyToMany(targetEntity="AppBundle\\Entity\\ShipType", inversedBy="owners") */ protected $owns; 

在我擁有的ShipType實體上

/**
 * @ORM\ManyToMany(targetEntity="AppBundle\Entity\Agency", mappedBy="owns")
 */
private $owners;

原則創建了一個關系表,用於具有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' => 'AppBundle\Entity\Agency'
    ]);
}

表單正在顯示,但由於要創建新的代理機構而無法使其持久化,我無法弄清楚如何使用這兩個表之間的關系表

先感謝您

檢查您的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;
}

另外,請確保您具有帶有默認內容的吸氣劑。 那應該做。

PS:雖然您不應該將屬性命名為動詞,但這是另一回事。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM