Symfony 主义 ManyToMany 插入
Symfony doctrine ManyToMany insert
我有一个可以创建新 "Book" 的表格。
对于一本书,我可以添加标签(例如描述关于它的附加信息)。
Book和Tag之间的关系是ManyToMany,因为每本书可以有很多标签,每个标签可以依赖不同的书。 (每个标签都是其名称中的唯一字段)。因此,当用户向数据库中不存在的书籍输入新标签时,我想在提交时创建标签。如果它已经存在,我想将标签添加到书中。我尝试了以下方法:
$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 行之后使用 persist 和 flush 创建这本书,然后才能继续?
2) 像我上面描述的那样处理向图书添加(新)标签的最佳方法是什么?
当我点击 "submit" 时,我的本地 Apache 没有响应 "hangs up"..
此致
尽量不要同时将图书添加到标签和将标签添加到图书。只需将标签添加到书籍并保留书籍实体。教义应该做这一切。当然,书籍或标签实体应该有添加书籍或标签的方法,由学说自动生成。
我有一个可以创建新 "Book" 的表格。 对于一本书,我可以添加标签(例如描述关于它的附加信息)。
Book和Tag之间的关系是ManyToMany,因为每本书可以有很多标签,每个标签可以依赖不同的书。 (每个标签都是其名称中的唯一字段)。因此,当用户向数据库中不存在的书籍输入新标签时,我想在提交时创建标签。如果它已经存在,我想将标签添加到书中。我尝试了以下方法:
$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 行之后使用 persist 和 flush 创建这本书,然后才能继续?
2) 像我上面描述的那样处理向图书添加(新)标签的最佳方法是什么?
当我点击 "submit" 时,我的本地 Apache 没有响应 "hangs up"..
此致
尽量不要同时将图书添加到标签和将标签添加到图书。只需将标签添加到书籍并保留书籍实体。教义应该做这一切。当然,书籍或标签实体应该有添加书籍或标签的方法,由学说自动生成。