搜索记录数组

时间:2014-09-04 14:27:19

标签: php symfony

我有类别和章节之间的OneToMany关系。我想要做的是实现部分的编辑。所以我到目前为止的编辑操作看起来像这样:

/**
   *
   *
   * @Route("category/{category_id}/section/{id}/edit", name="section_edit")
   * @Method("GET")
   * @Template()
   */



public function editAction($category_id, $id)

  {
      $em = $this->getDoctrine()->getManager();

  $category = $em->getRepository('MyOwnBundle:Category')->find($category_id);

  if (!$category) {
      throw $this->createNotFoundException('Unable to find Category entity.');
  }

    ////.....

}

一切都很简单,但我真的不知道如何浏览属于$ category的部分。要执行编辑,我需要这个特定的记录,其id == $ id。显然,我不能简单地浏览所有部分,因为那时我不知道我发现的是否真的属于$ category。任何允许我这样做的简单方法,或者我应该逐个简单地遍历这个$category->getSections()

1 个答案:

答案 0 :(得分:0)

解决方案非常简单。

您可以依靠ParamConverter加载necesarry对象。 如果找不到任何一个

,则会失败

您可以阅读更多相关信息here。别忘了导入(use)ParamConverter注释!

/**
* @Route("category/{category_id}/section/{id}/edit", name="section_edit")
* @ParamConverter("category", class="AcmeBundle:Category", options={"id": "category_id"})
* @Method("GET")
* @Template()
*/
public function editAction(Category $category, Section $section){
    // both category and section are fully loaded, no need to go to doctrine or check if they are null

    if ( !$section->getCategories()->contains($category)){
        throw $this->createNotFoundException('Invalid request.');
    }

    ...
    the rest of your logic
    ...
}