1

在我正在开发的 REST API 中,公司有一个父属性,该属性也属于公司类。

这样我就可以创建三个公司。一个公司有一个母公司(公司类),可以有多个子公司(集合)

/**
* @ORM\ManyToOne(targetEntity="Company", inversedBy="child")
* @Expose()
*/
protected $parent;

/**
* @ORM\OneToMany(targetEntity="Company", mappedBy="parent")
*/
protected $child;

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

我将如何着手和建立/消除这种父母和儿童公司的关系?

我已经阅读了LINK动词,但恐怕并非所有网络服务器都支持它。

我应该设置与 PUT 的关系吗?然后我将如何删除与父级的关系(将其设置为 NULL)。

我的 CompanyController 如下所示:

/**
    * Edit Action
    * 
    * @Rest\View()
    */
   public function editAction(Company $company)
   {
       return $this->processForm($company);
   }

   /**
    * Remove Action
    * 
    * @Rest\View(statusCode=204)
    */
   public function removeAction(Company $company)
   {
        $em = $this->getDoctrine()->getManager();
        $em->remove($company);
        $em->flush();
   }
   /**
    * ProcessForm Action
    */
   private function processForm(Company $company)
   {

       $statusCode = $this->getRequest()->getMethod() == 'POST' ? Codes::HTTP_CREATED : Codes::HTTP_SEE_OTHER;

       $form = $this->createForm(new CompanyType(), $company);
       $form->bind($this->getRequest());

       if($form->isValid())
       {
           $em = $this->getDoctrine()->getManager();
           $em->persist($company);
           $em->flush();

           return $this->redirectView(
            $this->generateUrl(
                'company_get',
                array('id' => $company->getId())
            ),
            $statusCode
            );

       }

       return View::create($form, 400);
   }

有什么建议么?

4

0 回答 0