我有两个实体User
和AbstractContent
,每边都有一个ManyToMany关系,一个属性(例如下面的类)用于关联,因此我为关联创建了一个实体UserAbstractContent
。
问题是当我尝试在表格中插入一行或多行({1}} AbstractContent
时出现错误。
Class UserAbstractContent:
UserAbstractContent
控制器:
class UserAbstractContent
{
/**
* @ORM\ManyToOne(targetEntity="push\Bundle\PushBundle\Entity\AbstractContent")
* @ORM\JoinColumn(nullable=false)
*/
private $content;
//Reviser
/**
* @ORM\ManyToOne(targetEntity="push\Bundle\UserBundle\Entity\User")
* @ORM\JoinColumn(nullable=false)
*/
private $user;
/**
* @var boolean
* @ORM\Column(name="accept", type="boolean",nullable=true)
*/
private $accept;
}
AbstractContent保存在数据库中,但这里没有保存UserAbstractcontent是sql错误:
// I save the AbstractContent
$em->persist($abstractContent);
$em->flush();
// getUsersByphones is a method to get the users with their phone numbers
$users = $em->getRepository("pushUserBundle:User")
->getUsersByphones($contactsConverted);
// a loop to link every user with the AbstractContent
foreach ($users as $user) {
$userAbstractContent = new UserAbstractContent();
$userAbstractContent->setContent($abstractContent);
$userAbstractContent->setUser($user);
$em->persist($userAbstractContent);
}
$em->flush();
哪里
答案 0 :(得分:0)
你的问题的答案很简单。您可能正在使用保留列名称。从它的外观来看,你可能正在使用MySQL。这是reserved words的列表。您可以看到单词read
是保留字。
尝试通过设置重命名列:
class UserAbstractContent {
/**
* @ORM\Column(name="some_other_name")
*/
public $read;
}
没有必要重命名实体属性,但将属性和列名称匹配被认为是一种好习惯。它让生活变得更轻松。因此,如果不是很多工作,请重命名$read
以反映表格列的名称。