반응형
Symfony2-Doctrine : ManyToMany 관계는 데이터베이스에 저장되지 않습니다.
Category 및 Item이라는 두 개의 PHP 모델 클래스가 있습니다. 범주에는 많은 항목이있을 수 있으며 항목은 여러 범주에 속할 수 있습니다. 두 클래스에 대해 ManyToMany 관계를 만들었습니다.
class Category
{
/**
* @ORM\ManyToMany(targetEntity="Item", mappedBy="categories", cascade={"persist"})
*/
private $items;
/**
* Add items
*
* @param Ako\StoreBundle\Entity\Item $items
*/
public function addItems(\Ako\StoreBundle\Entity\Item $items)
{
$this->items[] = $items;
}
/**
* Get items
*
* @return Doctrine\Common\Collections\Collection
*/
public function getItems()
{
return $this->items;
}
}
과:
class Item
{
/**
* @ORM\ManyToMany(targetEntity="Category", inversedBy="items", cascade={"persist"})
* @ORM\JoinTable(name="item_category",
* joinColumns={@ORM\JoinColumn(name="item_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="category_id", referencedColumnName="id")}
* )
*/
private $categories;
/**
* Add categories
*
* @param Ako\StoreBundle\Entity\Category $categories
*/
public function addCategories(\Ako\StoreBundle\Entity\Category $categories)
{
$this->categories[] = $categories;
}
/**
* Get categories
*
* @return Doctrine\Common\Collections\Collection
*/
public function getCategories()
{
return $this->categories;
}
}
이제 내 컨트롤러에서 :
$em = $this->getDoctrine()->getEntityManager();
$item = $em->getRepository('AkoStoreBundle:Item')->find($item_id);
$category = $em->getRepository('AkoStoreBundle:Category')->find($category_id);
$category->addItems($item);
$em->flush();
// Render the same page again.
이 페이지에서는 선택 필드의 모든 항목 목록을 보여줍니다. 사용자는 하나의 항목을 선택하여 카테고리에 추가 할 수 있습니다.
카테고리에 속하는 항목 목록이 양식 아래에 표시됩니다.
양식을 제출하면 선택한 항목이 Category 항목 목록에 추가되고 아래와 같이 표시되지만 데이터베이스에 저장되지 않고 페이지를 새로 고치면 사라집니다.
누구든지 이것으로 나를 도울 수 있습니까? 미리 감사드립니다.
범주 엔터티는 관계의 반대쪽 입니다.
addItems를 다음과 같이 변경해보십시오.
public function addItem(\Ako\StoreBundle\Entity\Item $item)
{
$item->addCategory($this);
$this->items[] = $item;
}
Note that I changed your plural names to singular, since you're dealing with single entities, not collections.
I had the same problems...I think you forgot
$category->addItems($item);
$em->persist($category);
$em->flush();
ReferenceURL : https://stackoverflow.com/questions/7044864/symfony2-doctrine-manytomany-relation-is-not-saved-to-database
반응형
'IT TIP' 카테고리의 다른 글
R 패키지의 네임 스페이스 (0) | 2020.12.30 |
---|---|
"-fno-exceptions"를 사용하면 "new T"는 어떻게됩니까? (0) | 2020.12.30 |
여러 조건으로 MySQL 조인 (0) | 2020.12.30 |
Haskell의 공분산 및 반 분산에 대한 논의가 많지 않은 이유는 무엇입니까 (Scala 또는 C #과 반대)? (0) | 2020.12.30 |
Linux의 최대 프로세스 수 (0) | 2020.12.30 |