symfony - symfony 4 夹具日期时间方法不能使用 PDO 数据中的字符串总是设置为“现在”
问题描述
我尝试使用 Symfony Doctrine Fixtures 将一些数据从 WordPress 迁移到我的 Symfony 应用程序。
除了从 wordpress mysql 数据库列“post_date”迁移日期之外,一切正常。
例如,我的 mysql 变量如下所示: $post_value['post_date'] = '2018-03-30 21:05:24'; 并使用 PDO 拍摄。这个字符串是真实的,我只是在这里复制/粘贴它;)
然后我在 DataFixtures 中有这样的东西:
$item = new Articles();
$item->setDateCreated(new \DateTime($post_value['post_date']));
...
$this->manager->persist($item);
...
$this->manager->flush();
在数据库中,它不会放置迁移的值,而是类似于使用 \DateTime("now") 的当前日期时间
我从 mysql 得到的结果是(新的/另一个 database.table.column):
SELECT distinct(date_created) FROM articles;
'2019-12-12 22:37:01'
'2019-12-12 22:37:02'
'2019-12-12 22:37:03'
'2019-12-12 22:37:04'
'2019-12-12 22:37:05'
'2019-12-12 22:37:06'
编辑:
迁移所有数据和上面的示例涉及一个条目,这两个来自 sql 的不同结果
编辑2:
//hard print_r for fisrt row
echo "\n ---- \n >>>";
print_r($post_value['post_date']);
echo "<<< \n ---- \n ";
die();
//result with this
----
>>>2010-05-25 23:05:20<<<
----
所以值不为空
解决方案
我认为问题不在于这段代码,而更多来自实体。
两种可能性:
- 实体在保存时会覆盖日期时间值。
- 该列被配置为自动添加“NOW()”函数而不是变量的值。
然后,要确切知道发生了什么,您可以使用其中一些线索:
- 检查您的实体是否使用 Doctrine Lifecycle。如果是这样,请检查在 @Prepersist 方法期间未覆盖此日期时间值。
- 该列应仅由 : 注释
@Column(type="datetime")
。 - 检查您的实体中是否没有使用任何 Doctrine Timestampable 捆绑包/特征。
推荐阅读
- linux - 如何从 linux 内核代码中获取发行版名称和版本?
- python - 为附加列等于特定字符串的重复项添加后缀
- python-3.x - 将 pandas pd.Excel 文件与用户输入的文件夹路径和文件名一起使用
- javascript - FullCalendar 列表视图 - 如何隐藏“全天”
- html - Aspx:表单验证
- node.js - Nodejs Nginx 502 错误网关
- javascript - 基于键在选项卡单击上调用函数?
- data-munging - 如何清理有拼写错误的数据
- c# - 如果我没有登录 vs 社区会怎样?
- kotlin - Kotlin:使用 AlertDialog 按钮删除 Recycerview 中的列表