學說的多對多邏輯讓我困惑了一下。我有一個非常簡單的食譜到類別的多對多關係。我的基本實體類同樣簡單。多對多,學說的實體發生器和多元化
的配方實體類...
class Recipe
{
/**
* @ORM\ManyToMany(targetEntity="Category", inversedBy="categories")
* @ORM\JoinTable(name="recipe_category")
**/
private $categories;
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="title", type="string", length=255)
*/
private $title;
public function __construct() {
$this->categories = new \Doctrine\Common\Collections\ArrayCollection();
}
}
和類別的實體類...
class Category
{
/**
* @ORM\ManyToMany(targetEntity="Recipe")
**/
private $recipes;
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255)
*/
private $name;
public function __construct() {
$this->recipes = new \Doctrine\Common\Collections\ArrayCollection();
}
}
似乎相當兩岸前進和匹配原則(與Symfony2中的)文件的例子。當我嘗試通過Symfony控制檯應用程序爲這些類生成getter和setter時,會出現奇怪的行爲。
關係設置者/獲取者不正確。舉個例子,在生成配方類分類制定者...
/**
* Add categories
*
* @param \Namespace\CookbookBundle\Entity\Category $categories
* @return Recipe
*/
public function addCategorie(\Namespace\CookbookBundle\Entity\Category $categories)
{
$this->categories[] = $categories;
return $this;
}
它看起來像自動生成方法名是關閉的。它應該是「addCategory」,並且應該通過一個「類別」。
雖然我可以手動糾正這個問題,但如果我重新運行實體生成器,它會再次添加它們。
我這樣做是不正確的,或者這只是一個實體生成器的怪癖嗎?我可以通過註釋指定重疊嗎?
那麼看起來很奇怪的是,它既不是'addCategories'或'addCategory',而是'addCategorie' ... – cheesemacfly 2013-03-06 19:31:55
同意。我認爲我可能搞砸了一些註釋,但似乎沒有任何影響,這導致我認爲它比註解/配置問題更像是一個核心問題。 – wlvrn 2013-03-06 19:38:56
我自己遇到了同樣的問題。只需手動修正,然後運行doctrine:generate:實體,只要你想要,它不會替代你現有的方法,拼寫錯誤的方法不會傷害任何東西。 – keyboardSmasher 2013-03-07 00:59:24