我「M具有其上我可以創建新的‘書’的形式。 對於一本書,我可以添加標籤(例如用於描述關於它的附加信息)。Symfony的教義多對多插入
簿和標籤之間的關係是多對多,因爲每一本書可以有很多的標籤,並且每個標籤可以依賴於不同的書籍。 (每個標籤是其名稱上唯一的字段)。所以,當用戶輸入一個新的標籤到數據庫中不存在的圖書時,我想在提交時創建標籤。如果它已經存在,我想將標籤添加到書中。我已經試過如下:
$book = $this->form->getData();
foreach ($tags as $tag) {
$tag = strtolower($tag);
// check if tag already exists
$tagEntity = $this->em->getRepository('BookBundle:Tag')->findByName($tag);
// if not, create new tag and add
if(null === $tagEntity)
{
$tagEntity = new Tag();
$tagEntity->setName($tag);
}
// add tag to book
$book->addTag($tagEntity);
// add book to tag
$tagEntity->addbook($book);
// create relation between tag and book
$this->em->persist($book);
$this->em->persist($tagEntity);
$this->em->flush();
}
問題:
1)我首先需要創建與堅持和沖洗1號線後的書,之前,我可以去嗎?
2)有什麼處理增加(新)標籤的書籍,就像我上面描述的最佳方式?
在當我點擊「提交」,我的本地阿帕奇不響應和「掛斷」的那一刻..
問候
到哪裏都是在$標籤從此來了嗎?不在代碼中。你有沒有檢查數組是否存在並且不是空的? – 2015-04-01 17:14:55
它不是空的,我發現這裏的解決方案,關鍵詞「反方」和「的addItem」:http://stackoverflow.com/questions/7044864/symfony2-doctrine-manytomany-relation-is-not-saved-to-數據庫 – 2015-04-01 20:26:08
當標籤已經存在時,Theres錯誤。你必須使用'''findOneByName'''否則它將返回數組。 – Keo 2015-04-02 08:49:11