我正在實施this tutorial。但是在我的情況Tag
實體具有獨特的name
屬性:,嵌入表格集合:檢查實體是否存在
/**
* @ORM\Entity()
*/
class Tag
{
/**
* @var string
* @ORM\Column(name="name", type="string", length=63, unique=true)
*/
private $name;
/**
* @ORM\ManyToMany(targetEntity="Task", cascade={"persist"})
* @ORM\JoinTable(name="tasks_tags")
*/
protected $tasks;
}
我如何檢查是否Tag
實體已經存在於new
和edit
控制器,這樣我可以決定創建新的。如果Tag
存在,我可以將它添加到新任務。
public function newAction(Request $request)
{
$task = new Task();
$form = $this->createForm(TaskType::class, $task);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$tags = $form->get('tags')->getData();
$em = $this->getDoctrine()->getManager();
foreach ($tags as $tagName) {
$tag = $this->getDoctrine()->getRepository('AppBundle:Tag')->findOneBy(array('name' => $tagName));
if (!$tag) {
$newTag = new Tag();
$newTag->setName($tagName);
$em->persist($newTag);
}
}
$em->persist($task);
$em->flush();
return $this->redirectToRoute('tasks_list');
}
}
我得到這個錯誤後提交:
Catchable Fatal Error: Object of class
AppBundle\Entity\Tag
could not be converted to string
我認爲這是因爲提交Task
形式之前Tag
實體依然存在。
我該如何處理這部分?
yes和$'newTag-> setName($ tagName);'$ tagName正在嘗試查找'__toString()'將對象轉換爲字符串的行中顯示標記爲{{tag.name} ,這並不存在,因此......良好的捕獲 – sakhunzai