我的实体,看起来像。
/**
* @ORM\Entity(repositoryClass=ExperienceRepository::class)
*/
class Experience
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private $id;
/**
* @Assert\Range(
* min=0,
* max=100
* )
* @ORM\Column(type="integer")
* @Groups({"experience:read", "experience:write"})
*/
private $years;
/**
* @ORM\OneToMany(targetEntity=Limit::class, mappedBy="experience")
* @Groups({"experience:read"})
*/
private $limits;
/**
* @ORM\Entity(repositoryClass=LimitRepository::class)
*/
class Limit
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
* @Groups({"limit:read"})
*/
private $id;
/**
* @ORM\Column(type="datetime")
* @Groups({"limit:read", "limit:write"})
*/
private $limitDate;
/**
* @ORM\Column(type="float")
* @Groups({"limit:read", "limit:write"})
*/
private $limitValue;
/**
* @ORM\ManyToOne(targetEntity=Experience::class, inversedBy="limits")
* @ORM\JoinColumn(nullable=false)
*/
private $experience;
/**
* @ORM\Column(name="created_at", type="datetime", nullable=true)
* @Groups({"limit:read"})
*/
private $createdAt = null;
/**
* @ORM\Column(name="updated_at", type="datetime", nullable=true)
* @Groups({"limit:read"})
*/
private $updatedAt = null;
当我试图创建对象,并将其保存在数据库中时,我做了下一步(在控制器中)。
$em = $this->getDoctrine()->getManager();
$exp = new Experience();
$exp->setYears(5);
$em->persist($exp);
$em->flush();
$l = new Limit();
$l->setLimitValue((1 + 2 + 1) * 1000);
$l->setLimitDate(new \DateTime());
$l->setExperience($exp);
$em->persist($l);
$em->flush();
然后,我得到了一个错误:
在执行''时发生了一个异常
INSERT INTO limit (limit_date, limit_value, created_at, updated_at, experience_id) VALUES (?, ?, ?, ?, ?)
'与参数["2020-06-03 11:01:56", 4000, null, null, 51]
:SQLSTATE[42000]: 语法错误或访问违规。1064 你的SQL语法有错误,请查看与你的MySQL服务器版本对应的手册,以了解在''附近使用的正确语法。
limit (limit_date, limit_value, created_at, updated_at, experience_id) VALUES ('
'在第1行
我做错了什么?