doctrine-orm - 持久化数据后刷新时出现致命错误
问题描述
我想将新实体中的数据持久化到数据库中,这是最基本的操作之一吗?但是当我 flush 时,我收到以下致命错误:
FatalErrorException in DateTimeType.php line 53:
Error: Call to a member function format() on string
所以这就是我想在 Symfony 3.2、PHP 5.6(叹息)和 mariadb 10.3 上保存我的数据的方式:
$myEntity = new myEntity();
$myEntity->setFoo('a');
$myEntity->setBar('b');
$myEntity->setDateCreation(new \DateTime());
$this->em->persist($myEntity);
$this->em->flush();
我的实体:
class myEntity
{
// ...
/**
* @var string
*
* @ORM\Column(name="sFoo", type="string", length=255, nullable=false, unique=true)
*/
private $foo;
/**
* @var string
*
* @ORM\Column(name="sBar", type="string", length=255, nullable=false)
*/
private $bar;
/**
* @var \DateTime
*
* @ORM\Column(name="dDateCreation", type="date")
*/
private $dateCreation;
// Getter and setters are classics, here's the one for the date
public function setDateCreation($dateCreation)
{
$this->dateCreation = $dateCreation;
}
}
如果我在刷新之前停止脚本,我绝对不会出错。当我之前转储我的实体时,所有属性都设置正确:
MyEntity {#2301 ▼
-id: null
-foo: "a"
-bar "b
-dateCreation: DateTime {#2204 ▼
+"date": "2020-07-06 12:32:17.000000"
+"timezone_type": 3
+"timezone": "Europe/Paris"
}
}
从数据库方面:列似乎设置正确:sFoo 和 sBar 是VARCHAR(255)
dDateCreation 是date
。
我最终将日期字段类型从日期更改为字符串,并使用字符串作为参数,例如“20200706”,只是为了尝试。而且......我得到了同样的错误,即使没有 DateTime 参与其中。
要么我完全失明,并且我在发布的代码中忘记了明显的事情,要么原因来自其他地方。
我对另一个实体尝试了相同的操作,结果相同。
解决方案
推荐阅读
- python - 如何在 Mac 上的 Python 中将 NEF(原始图像文件类型)转换为 JPG?
- ruby - RubyMine:终止超时工人
- java - How to sort multiple arrays of different types (int and String)
- swiftui - SwiftUI:在 Single 和 HStack 视图之间制作动画
- spring-boot - CAS 6.0 和 Spring Security:服务票证验证时 JWT 配置失败
- spring - 在每个 Spring Boot 服务上使用一个接口是否有意义?
- recursion - 如何使用 Jinja2 递归渲染 YAML?
- javascript - 获取单个记录输出的内容多于记录内容,而 json.parse 未记录正确的数据
- cassandra - 无法更改 Cassandra 数据中心
- python - 使用 QFileSystemModel 时索引 PyQt5 组合框